0
저는 일괄 스크립팅을 처음 사용합니다. 내 스크립트는 간단합니다. 2 개의 변수를 동적 인 2 개의 파일 이름으로 설정하는 코드가 있습니다 (스크립트가 실행될 때마다 다를 수 있음).Windows 배치 스크립트 : diff 명령에서 변수 사용이 작동하지 않습니다.
이제 "diff"명령에서 이러한 변수를 사용하고 싶습니다.
내가 지금 GNU Diffutils의
스크립트를 사용하고 있다는 관련이있을 수 :
:Variables
SET FolderPath=H:\Marketing\Website\DB Files\CSV Outputs
@echo on
echo Upload Item Master diff to FTP
FOR /F "delims=|" %%I IN ('DIR "%FolderPath%\*.csv" /B /O:D') DO SET NewestFile=%%I
FOR /F "delims=|" %%J IN ('DIR "%FolderPath%\*.csv" /B /O:-D') DO SET OldestFile=%%J
echo Newest file %NewestFile%
echo Oldest file %OldestFile%
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' %OldestFile% %NewestFile% >%FolderPath%\DiffOut\IM-diff.csv
순간 출력은 다음과 같습니다
.....
H:\>echo Newest file DB Item Master table 17-03-17.csv
Newest file DB Item Master table 17-03-17.csv
H:\>echo Oldest file DB Item Master table 28-02-17.csv
Oldest file DB Item Master table 28-02-17.csv
H:\>diff --unchanged-line-format= --old-line-format= --new-line-format='OldestFileNewestFileFolderPath\DiffOut\IM-diff.csv
diff: missing operand after `--new-line-format='OldestFileNewestFileFolderPath\DiffOut\IM-diff.csv'
diff: Try `diff --help' for more information.
나는에 스크립트를 필요 명령에서 변수 파일 이름을 넣을 수 있어야합니다.
H:\>diff --unchanged-line-format= --old-line-format= --new-line-format='"DB Item Master table 28-02-17.csv" "DB Item Master table 17-03-17.csv" "H:\Marketing\Website\DB Files\CSV Outputs\DiffOut\IM-diff.csv"
아마 새로운 라인 형식에 대한 퍼센트 기호를 두 배로 필요 (BTW>을 출력 문제가 뭔가 함께 할 수 있었다 나는 OK가 있다고 분류). 퍼센트 기호는 특별한 의미가 있다는 것을 기억하십시오. 따라서 확장 할 변수 이름으로'% L '%'을 (를)보고 있습니다. 따라서'% L '을'%% L'로 변경하십시오. – Squashman
이는 의도적으로 설계된 것입니다. 1>은 표준 출력을 파일로 재 지정 함을 의미합니다. cmd.exe가> to 1>을 확장하지 않도록 할 수 없습니다. – Squashman
코드로 주석을 삭제하고 질문을 편집하십시오. 의견을 읽기가 어렵습니다. – Squashman