다른 명령과 함께 `cmd /V:ON`을 순차적으로 실행하는 방법

다른 명령과 함께 `cmd /V:ON`을 순차적으로 실행하는 방법

명령줄을 통해 달성하려는 작업은 디렉터리의 파일을 루프하고 이름을 한 단계 높은 일련 번호로 바꾸는 것입니다. 다음을 통해 이를 달성할 수 있습니다.

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

그러나 문제는 cmd /V:ON먼저 명령줄에서 수행하지 않고는 변수 확장을 수행할 수 없다는 것입니다. 이런 식으로 하려고 노력했어요

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

하지만 그것도 작동하지 않았습니다. 그래서 제 질문은 이 문제를 해결할 수 있는 방법이 있느냐는 것입니다. 이 스레드에 따르면이것스레드를 cmd 라인에서 사용할 수 있어야 하는데 setlocal enabledelayedexpansion작동하지 않습니다. 이 주변에 거리가 있나요?

답변1

정말로 원하거나 명령 프롬프트에서 직접 한 줄로 수행해야 하는 경우:

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

ECHO원하는 대로 작동하는지 확인한 후 저장 가드를 제거하세요.

답변2

cmd /V:ON on명령줄을 먼저 수행하지 않고는 변수 확장을 수행할 수 없습니다 .

옳은. 그러나 다음은 작동합니다:

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

추가 자료

관련 정보