У меня есть этот код в файле пакетный (gitcopyfiles.bat), который отслеживает модифицированную файлы мерзавца и копирует их в указанную папку, но она не работает:Win7 Batch команда не работает
for /f "usebackq tokens=*" %A in (`git diff-tree -r --no-commit-id --name-only
--diff-filter=ACMRT HEAD~1 HEAD`) do echo FA|xcopy "%~fA" "C:\git_changed_files\%A"
Но это Безразлично 't work однако, когда я запускаю указанную команду непосредственно из командной строки, она работает хорошо. Таким образом, это не работает только в пакетном файле.
Может ли кто-нибудь помочь, что может быть неправильным? Я даже попытался запустить битой файл как администратор, но до сих пор не повезло
сообщение об ошибке, которое приходит на летучую мышь файла:
~fA" "C:\git_changed_files\A" was unexpected at this time.
D:\wamp\www\myproject>for /f "usebackq tokens=*" ~fA" "C:\git_changed_files\A"
Я предполагаю, что вы имели в виду, что ** ** делает работу в командной строке - основная причина, я вижу использование '% A 'вместо' %% A' существует несколько различий между CMD и выполнением командного файла кода – SmokeyPHP
@SmokeyPHP: Пробовал сменить '% A' на' %% A', но все равно не работал. Может быть, с косой чертой? – Dev01
Я никогда не запускал команду, которая использует такие флаги, как '--no-commit', но я знаю, что когда я использовал специальные символы в команде' in() ', такой как pipe (' | '), я должен был убежать так: '^ |' (например, 'in ('ipconfig^| find" address "')' – SmokeyPHP