Foro de elhacker.net

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
  1. @echo off
  2. set /p ext=Extension?
  3. set /p cant=Cantidad final de caracteres?
  4. call :len %ext%
  5. set /a cnt2=%a%+%cant%
  6. for %%a in (*.%ext%) do call :cll %%a
  7. :cll
  8. set name=%1
  9. call :len %1
  10. if /I %a% geq %cnt2% (
  11. call set newn=%%name:~0,%cant%%%.%ext%
  12. ren %name% %newn%
  13. )
  14. goto :EOF
  15.  
  16. :len
  17. if %1'==' goto :EOF
  18. set w=%1
  19. set a=0
  20. set bol=0
  21. :lp
  22. call :cnt "%%w:~%a%,1%%" %a%
  23. if %bol%==1 goto :EOF
  24. set /a a=%a%+1
  25. goto lp
  26. :cnt
  27. set cur=%1
  28. set len=%2
  29. if %cur%a==""a (
  30. echo %len%
  31. set bol=1
  32. )
  33. 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
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
  1. @echo off
  2. for %%a in (*.xls) do call :cll %%a
  3.  
  4. :cll
  5. set name=%1
  6. set t=%name:~-8%
  7. call set fin=%%name:%t%=%%
  8. ren %name% %fin%.xls
  9. 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
  1. @echo off
  2. for %%a in (*.xls) do (call :fr %%a)
  3. pause&& exit
  4. :fr
  5. set act=%1
  6. set nu=%act:.ctk=%
  7. ren "%act%" "%nu%"
  8. 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
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
Citar
Si 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
  1. set objfso = createobject("scripting.filesystemobject")
  2. set carpeta = objfso.getfolder("D:\Prueba")
  3. set archivos = carpeta.files
  4. for each f in archivos
  5. objfso.movefile carpeta.path & "\" & f.name,carpeta.path & "\" & replace(f.name,".ctk","")
  6. next
  7. msgbox "Terminado"

Citar
D:\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
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
Citar
Si 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
  1. set objfso = createobject("scripting.filesystemobject")
  2. set carpeta = objfso.getfolder("D:\Prueba")
  3. set archivos = carpeta.files
  4. for each f in archivos
  5. objfso.movefile carpeta.path & "\" & f.name,carpeta.path & "\" & replace(f.name,".ctk","")
  6. next
  7. msgbox "Terminado"

Citar
D:\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
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.

Código:
:: 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
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