Lo que estoy tratando de lograr a través de la línea de comando es bucle de archivos en un directorio y simplemente cambiarles el nombre a un número secuencial. Puedo lograr eso con lo siguiente
set/a fileNum = 1 & for %f in (*.txt) do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1 )
Sin embargo, el problema es que no puedo realizar una expansión variable sin hacerlo cmd /V:ON
primero en la línea de comando. he tratado de hacerlo de esta manera
cmd /V:ON & set/a fileNum = 1 & for %f in (*.txt) do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1 )
pero eso tampoco funcionó. Entonces mi pregunta es, ¿hay alguna manera de evitar esto? Según esto a este hilo.estehilo que debería poder usar setlocal enabledelayedexpansion
en la línea cmd, pero eso no funciona. ¿Hay alguna manera de solucionar esto?
Respuesta1
Si realmente quieres/tienes que hacerlo como una sola línea directamente en el símbolo del sistema:
@>nul set filenum=1&@for %f in (*.txt) do @(cmd /v:on /c ECHO ren "%~nxf" "!fileNum!%~xf"&>nul set/a fileNum+=1)
Elimine la protección ECHO
después de verificar que hace lo que desea
Respuesta2
No puedo hacer una expansión variable sin hacer cmd /V:ON on
primero la línea de comando.
Correcto. Sin embargo, lo siguiente debería funcionar:
cmd /V:ON /c "set/a fileNum = 1 & for %f in (*.txt) do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1)
Otras lecturas
- Un índice AZ de la línea de comando CMD de Windows | SS64.com
- Comandos CMD de Windows (categorizados) - CMD de Windows - SS64.com
- CMD.exe (Command Shell) - Windows CMD - SS64.com- Inicie un nuevo shell CMD y (opcionalmente) ejecute un comando/programa ejecutable.