2017-03-17 5 views
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" 
+1

아마 새로운 라인 형식에 대한 퍼센트 기호를 두 배로 필요 (BTW>을 출력 문제가 뭔가 함께 할 수 있었다 나는 OK가 있다고 분류). 퍼센트 기호는 특별한 의미가 있다는 것을 기억하십시오. 따라서 확장 할 변수 이름으로'% L '%'을 (를)보고 있습니다. 따라서'% L '을'%% L'로 변경하십시오. – Squashman

+0

이는 의도적으로 설계된 것입니다. 1>은 표준 출력을 파일로 재 지정 함을 의미합니다. cmd.exe가> to 1>을 확장하지 않도록 할 수 없습니다. – Squashman

+1

코드로 주석을 삭제하고 질문을 편집하십시오. 의견을 읽기가 어렵습니다. – Squashman

답변

0

솔브레드

감사합니다.

Squashman

많은 감사 -