So führen Sie `cmd /V:ON` in einer Zeile mit einem anderen Befehl aus, um ihn sequenziell auszuführen

So führen Sie `cmd /V:ON` in einer Zeile mit einem anderen Befehl aus, um ihn sequenziell auszuführen

Was ich über die Befehlszeile erreichen möchte, ist, Dateien in einem Verzeichnis zu loopen und sie einfach in eine fortlaufende Nummer umzubenennen. Das kann ich mit dem folgenden erreichen

set/a fileNum = 1 & for %f in (*.txt)  do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1 )

Das Problem ist jedoch, dass ich keine Variablenerweiterung durchführen kann, ohne dies cmd /V:ONzuerst in der Befehlszeile zu tun. Ich habe versucht, es auf diese Weise zu tun

 cmd /V:ON & set/a fileNum = 1 & for %f in (*.txt)  do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1 )

aber das hat auch nicht funktioniert. Meine Frage ist also, gibt es einen Weg, das zu umgehen. Laut diesem ThreadDasThread, den ich in der Befehlszeile verwenden könnte setlocal enabledelayedexpansion, aber das funktioniert nicht. Gibt es eine Möglichkeit, das zu umgehen?

Antwort1

Wenn du es wirklich als Einzeiler direkt in der Eingabeaufforderung machen willst/musst:

@>nul set filenum=1&@for %f in (*.txt) do @(cmd /v:on /c ECHO ren "%~nxf" "!fileNum!%~xf"&>nul set/a fileNum+=1)

Entfernen Sie den Save-Guard, ECHOnachdem Sie überprüft haben, dass er das gewünschte Ergebnis liefert

Antwort2

Ich kann keine Variablenerweiterung durchführen, ohne cmd /V:ON onzuerst die Befehlszeile auszuführen.

Richtig. Folgendes sollte jedoch funktionieren:

cmd /V:ON /c "set/a fileNum = 1 & for %f in (*.txt)  do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1)

Weitere Informationen

verwandte Informationen