Je suis relativement nouveau dans les scripts batch. Mon script est simple. J'ai le code jusqu'ici pour définir 2 variables de 2 noms de fichiers qui sont dynamiques (peuvent être différentes chaque fois que le script est exécuté).Script batch Windows: l'utilisation de la variable dans la commande diff ne fonctionne pas
Maintenant, je veux utiliser ces variables dans une commande "diff".
Il peut être pertinent que j'utilise GNU Diffutils
Script au moment:
: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
La sortie au moment est:
.....
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.
J'ai besoin du script être en mesure de mettre le nom du fichier variable dans la commande, donc:
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"
probablement besoin de doubler le symbole pour cent sur le nouveau format de ligne. Rappelez-vous que les symboles de pourcentage ont une signification particulière. Donc, il voit '% L '%' comme le nom de la variable à développer. Donc, changez '% L' en' %% L' – Squashman
C'est par conception. Le 1> signifie qu'il redirige la sortie standard vers le fichier. Vous ne pouvez pas faire en sorte que cmd.exe ne développe pas le> à 1>. – Squashman
Supprimez votre commentaire avec le code et modifiez votre question. Difficile à lire dans un commentaire. – Squashman