명령줄을 통해 달성하려는 작업은 디렉터리의 파일을 루프하고 이름을 한 단계 높은 일련 번호로 바꾸는 것입니다. 다음을 통해 이를 달성할 수 있습니다.
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)
추가 자료
- Windows CMD 명령줄의 AZ 인덱스 | SS64.com
- Windows CMD 명령(분류됨) - Windows CMD - SS64.com
- CMD.exe(명령 셸) - Windows CMD - SS64.com- 새 CMD 셸을 시작하고 (선택적으로) 명령/실행 프로그램을 실행합니다.