나는 문제의 배치 코드가 완료 또는 폴더 Desktop
에 기존과 다른 Device*.json
파일이 존재하지 않습니다, 빈 라인 때문에 Device.json
으로 문제를 재현하기 정말 적합하지 않은 스크립트 코드로 감소하지 않습니다 확신 해요 먼저 Device1.json
에 기록됩니다. Device.json
이름의 파일은 변수 FileNumber
이 항상 적어도 값 1
을 갖기 때문에 문제의 배치 코드로 덮어 쓰지 않습니다. 내가 /F
없이 수행으로 FOR 루프 * .json 파일을 검색해야 가정으로
음, 에 대한 옵션 /F
여기에 가장 가능성이 잘못된 것입니다. 옵션 오류 메시지 /F
결과와 함께 .json * 같은 와일드 카드 패턴을 사용하여 :
시스템은 파일 *의 .json을 찾을 수 없습니다. 명령 프롬프트 창을 for /?
또는이 명령의 구문에 도움을 help for
에서
를 실행합니다.
FileName
변수가 전혀 사용되지 않았기 때문에 1301의 목적은 무엇입니까? 루프가 완전히 명확하지 않습니다. 이 변수는 * .json 파일이 전혀 발견되지 않으면 마지막으로 발견 된 * .json의 이름을 보유해야합니다. 그러나 더 이상 사용하지 않으면 그 의미가 없습니다.
BaseName
및 FileNumber
이 루프 내부에 정의되어 있고 외부에 정의되어 있지 않은 이유도 분명하지 않습니다.
전체 배치 코드에서 FileNameLoop
레이블은 아마도 서브 루틴의 시작일 것입니다. 그러나 문제의 축소 배치 코드에는이 경우 기대할만한 것이 없습니다 call :FileNameLoop "%%G"
입니다.
게시 된 배치 코드에 실제로 어떤 문제가 있는지 확실하지 않으므로 대답하기가 어렵습니다.
:MainProcessNew
cd /D "%USERPROFILE%\Desktop"
rem Useless FOR loop without /F commented out.
rem for %%G in (*.json) do set "FileName=%%G"
set "BaseName=Device"
set "FileNumber="
rem Skip searching for files with a file number
rem after Device if there is no Device.json file.
if not exist "%BaseName%.json" goto CreateFile
rem Otherwise keep Device.json as is and search for Device1.json,
rem Device2.json, ... until a Device*.json file with current number
rem is not found and use this number for next Device*.json file.
set "FileNumber=0"
:FileNameLoop
set /A FileNumber+=1
if exist "%BaseName%%FileNumber%.json" goto FileNameLoop
:CreateFile
rem Note: FileNumber is replaced in the line below by an empty
rem string if there is no Device.json in desktop folder.
echo.>"%USERPROFILE%\Desktop\%BaseName%%FileNumber%.json"
힌트 :
- 코멘트 배치 파일을 디버깅하거나 제거 모든
@echo off
또는 echo off
을 배치 파일 또는 on
에 off
,
- 명령 프롬프트 창을 열고 변경에 대한
"Path to batch file\BachFileName.bat"
을 입력하고 RETURN을 누릅니다.지금
이 명령 프롬프트 창에서 볼 수있는 각각의 라인과 현재 라인 또는 상기 변수의 현재 값에 의해 모든 %VariableName%
교환 후 수단 각각의 명령 블록 전처리 후 Windows 명령 프로세서 의해 실행되는 각 행 전체 명령 블록.
그리고 오류 메시지
또한 옵션 항상 현재 명령 프로세스를 종료 /B
하지 않고 명령 exit
을 포함 제외 프롬프트 창을 중지 배치 파일을 처리 한 후 열려 명령으로 볼 수있다.
질문을 편집하고이 배치 파일을 한 번 실행 한 후 사용자의 바탕 화면 폴더에 포함 된 * .json 파일과 포함 할 * .json 파일을 추가 할 수 있습니까? 이 배치 코드가이 배치 파일을 실행할 때 활성화 된 사용자 계정의 바탕 화면 폴더에'Device1.json','Device2.json', ...을 생성해서는 안되는 이유가 없습니다. BTW : 관리자로 실행은 다른 사용자 계정으로 실행한다는 것을 의미합니다. – Mofi
Desktop에 Device.json이라는 이름의 기존 .json 파일이 있지만 스크립트를 실행하면 방금 입력 한 새 데이터로 Device.json의 내용이 덮어 쓰기됩니다. –
가능한 [ 배치?] (http://stackoverflow.com/questions/39201500/how-do-i-increment-a-filename-in-batch) – HaveNoDisplayName