Cómo ejecutar `cmd /V:ON` en línea con otro comando para ejecutarlo secuencialmente

Cómo ejecutar `cmd /V:ON` en línea con otro comando para ejecutarlo secuencialmente

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:ONprimero 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 enabledelayedexpansionen 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 ECHOdespués de verificar que hace lo que desea

Respuesta2

No puedo hacer una expansión variable sin hacer cmd /V:ON onprimero 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

información relacionada