Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: seu230 en 7 Julio 2008, 22:00 PM

Título: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: seu230 en 7 Julio 2008, 22:00 PM
Hola amigos ¿como seria un bat que me borre los 4 ultimos caracteres de todos los archivos .xls contenidos en una carpeta? osea que me modifique los nombres de los archivos, por cierto los 4 ultimos caracteres siempre son .ctk (ojo que no es extensión la extension en si siempre es .xls)

Un saludo y gracias
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: carlitos.dll en 7 Julio 2008, 22:26 PM
quieres cambiar la extensión o el nombre.

Igual es complicado, porque que pasa si el nombre tiene 4 caracteres, ¿lo dejarás en nada?
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: aaronduran2 en 7 Julio 2008, 22:33 PM
Si lo hicieses en VBS sería más fácil.
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: seu230 en 7 Julio 2008, 22:37 PM
Solo quiero cambiarle el nombre y todos los archivos xls siempre tienen nombres de mas de 4 caracteres estuve leyendo algo en este link sobre caracteres:

http://multingles.net/docs/bats.htm

Pero igual no se como aplicarlo ¿como seria en VBS? el detalle tambien es que voy a meterle otras ordenes a este .bat y ps tendria que repasar VBS desde cero y ps medio que le agarre un poco la onda a los script .bat

Un saludo y gracias
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: The Shadow en 7 Julio 2008, 23:13 PM
Un ejemplo de utilidad:

Código (DOS) [Seleccionar]
@echo off
set /p ext=Extension?
set /p cant=Cantidad final de caracteres?
call :len %ext%
set /a cnt2=%a%+%cant%
for %%a in (*.%ext%) do call :cll %%a
exit
:cll
set name=%1
call :len %1
if /I %a% geq %cnt2% (
call set newn=%%name:~0,%cant%%%.%ext%
ren %name% %newn%
)
goto :EOF

:len
if %1'==' goto :EOF
set w=%1
set a=0
set bol=0
:lp
call :cnt "%%w:~%a%,1%%" %a%
if %bol%==1 goto :EOF
set /a a=%a%+1
goto lp
:cnt
set cur=%1
set len=%2
if %cur%a==""a (
echo %len%
set bol=1
)
goto :EOF


Saludos!
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: carlitos.dll en 7 Julio 2008, 23:20 PM
estamos trabajando para usted :D
espera que estoy haciendo pruebas.
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: The Shadow en 7 Julio 2008, 23:21 PM
Cita de: seu230 en  7 Julio 2008, 22:00 PM
Hola amigos ¿como seria un bat que me borre los 4 ultimos caracteres de todos los archivos .xls contenidos en una carpeta? osea que me modifique los nombres de los archivos, por cierto los 4 ultimos caracteres siempre son .ctk (ojo que no es extensión la extension en si siempre es .xls)

Un saludo y gracias
Código (DOS) [Seleccionar]

@echo off
for %%a in (*.xls) do call :cll %%a
pause
exit

:cll
set name=%1
set t=%name:~-8%
call set fin=%%name:%t%=%%
ren %name% %fin%.xls
goto :EOF


Saludos!
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: The Shadow en 7 Julio 2008, 23:35 PM
menos lineas:

Código (dos) [Seleccionar]
@echo off
for %%a in (*.xls) do (call :fr %%a)
pause&& exit
:fr
set act=%1
set nu=%act:.ctk=%
ren "%act%" "%nu%"
goto :EOF


Saludos!
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: seu230 en 7 Julio 2008, 23:47 PM
Hola the shadow muchas gracias por la ayuda pero no me esta funcionando, me sale "el sistema no puede hallar el archivo especificado" varias veces
Un saludo y gracias de nuevamente
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: The Shadow en 7 Julio 2008, 23:56 PM
Cita de: seu230 en  7 Julio 2008, 23:47 PM
Hola the shadow muchas gracias por la ayuda pero no me esta funcionando, me sale "el sistema no puede hallar el archivo especificado" varias veces
Un saludo y gracias de nuevamente

q code estas tratando de usar???
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: Novlucker en 8 Julio 2008, 01:25 AM
CitarSi lo hicieses en VBS sería más fácil.

En este caso, para lo que quiere hacer, realmente no se si sea la mejor opciòn, creo que me quedo con batch  :P (solo en este caso XD)
Pero como ejemplo....

Código (vb) [Seleccionar]
set objfso = createobject("scripting.filesystemobject")
set carpeta = objfso.getfolder("D:\Prueba")
set archivos = carpeta.files
for each f in archivos
objfso.movefile carpeta.path & "\" & f.name,carpeta.path & "\" & replace(f.name,".ctk","")
next
msgbox "Terminado"


CitarD:\Prueba
Sería la ruta completa a la carpeta donde están los archivos  ;D

Saludos
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: seu230 en 8 Julio 2008, 01:26 AM
Cita de: The Shadow en  7 Julio 2008, 23:56 PM
Cita de: seu230 en  7 Julio 2008, 23:47 PM
Hola the shadow muchas gracias por la ayuda pero no me esta funcionando, me sale "el sistema no puede hallar el archivo especificado" varias veces
Un saludo y gracias de nuevamente

q code estas tratando de usar???

El ultimo que pusistes aunque el penultimo tampoco me funciona
Un saludo
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: seu230 en 8 Julio 2008, 01:34 AM
Cita de: Novlucker en  8 Julio 2008, 01:25 AM
CitarSi lo hicieses en VBS sería más fácil.

En este caso, para lo que quiere hacer, realmente no se si sea la mejor opciòn, creo que me quedo con batch  :P (solo en este caso XD)
Pero como ejemplo....

Código (vb) [Seleccionar]
set objfso = createobject("scripting.filesystemobject")
set carpeta = objfso.getfolder("D:\Prueba")
set archivos = carpeta.files
for each f in archivos
objfso.movefile carpeta.path & "\" & f.name,carpeta.path & "\" & replace(f.name,".ctk","")
next
msgbox "Terminado"


CitarD:\Prueba
Sería la ruta completa a la carpeta donde están los archivos  ;D

Saludos

Hola Novlucker si funciono aunque siempre me quedare con la duda de como seria con un .bat

Un saludo y mil gracias nuevamente
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: carlitos.dll en 8 Julio 2008, 02:45 AM
[modificado]

He dejado un nuevo code, que cumple mejor los objetivos, en este mismo post más adelante.
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: The Shadow en 8 Julio 2008, 03:43 AM
Cita de: seu230 en  8 Julio 2008, 01:26 AM
Cita de: The Shadow en  7 Julio 2008, 23:56 PM
Cita de: seu230 en  7 Julio 2008, 23:47 PM
Hola the shadow muchas gracias por la ayuda pero no me esta funcionando, me sale "el sistema no puede hallar el archivo especificado" varias veces
Un saludo y gracias de nuevamente

q code estas tratando de usar???

El ultimo que pusistes aunque el penultimo tampoco me funciona
Un saludo

Ejecutaste el .bat en la misma carpeta donde estan los *.ctk.xls??? . . .

akabo de revisar, y no ay errores . . . ademas . . . tmb me funka perfecto. . .

Saludos!
Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: carlitos.dll en 9 Julio 2008, 23:19 PM
Bueno, finalmente escribí un bat que renombrara quitando los últimos 4 caracteres del nombre aceptando archivos que incluyan nombres con espacios.


:: CarlitoS.dll
:: Bat que borra 4 ultimos caracteres de los nombres de varios archivos aceptando archivos que incluyan nombres con espacios.
:: Ubicar este bat en la misma carpeta de los archivos a renombrar.

@echo off

set ext=xls
rem ext es la extension de los archivos sin anteponer punto.

set sacar=4
rem sacar es la cantidad de letras al final del nombre que quieres sacar.

for /f "tokens=*" %%f in ('dir /b /a *.%ext%') do call :lab %%f
exit

:lab
set original=
set original=%*
set newname=
call set newname=%%original:.%ext%=%%
call set newname=%%newname:~0,-%sacar%%%.%ext%
if "%newname%"==".%ext%" (goto :eof)
ren "%original%" "%newname%"
goto :eof


Título: Re: ¿Bat que borre 4 ultimos caracteres de los nombres de varios archivos?
Publicado por: seu230 en 14 Julio 2008, 03:46 AM
Cita de: The Shadow en  8 Julio 2008, 03:43 AM
Cita de: seu230 en  8 Julio 2008, 01:26 AM
Cita de: The Shadow en  7 Julio 2008, 23:56 PM
Cita de: seu230 en  7 Julio 2008, 23:47 PM
Hola the shadow muchas gracias por la ayuda pero no me esta funcionando, me sale "el sistema no puede hallar el archivo especificado" varias veces
Un saludo y gracias de nuevamente

q code estas tratando de usar???

El ultimo que pusistes aunque el penultimo tampoco me funciona
Un saludo

Ejecutaste el .bat en la misma carpeta donde estan los *.ctk.xls??? . . .

akabo de revisar, y no ay errores . . . ademas . . . tmb me funka perfecto. . .

Saludos!

Hola the shadow perdon por la demora en responder lo volvi a probar y ahora si me funciono de hecho ahora me funcionan todos e incluso se me ocurrio aprovechar que los ultimos 4 digitops son .ckt para eliminar la extension .xls y de esa forma la pc entendera que ahora la extenson es .ckt y ps ahora solo tengo que volver a cambiar de extension a .xls un saludo y gracias a todos por la ayuda