0

我在批处理(gitcopyfiles.bat)文件中有这段代码,它跟踪修改过的git文件并将它们复制到指定的文件夹,但它不起作用:

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"

但它不起作用,但是当我直接从命令提示符运行上述命令时,它运行良好。所以它不仅仅在批处理文件中起作用。

任何人都可以帮忙解决什么问题吗?我什至尝试以管理员身份运行 bat 文件,但仍然没有运气

bat 文件中出现的错误信息是:

~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"
4

2 回答 2

1
do echo FA|xcopy "%~fA" "C:\git_changed_files\%A"
  1. echo FA|没必要,去掉
  2. "%~fA"如果未设置文件的路径,可能无法正常工作
  3. \%A"没必要,去掉
  4. for /f "usebackq tokens=*"应该for /f "usebackq delims="
于 2013-09-17T12:10:24.290 回答
1

试一试:

@echo off
for /f "delims=" %%A in ('git diff-tree -r --no-commit-id --name-only --diff-filter=ACMRT HEAD~1 HEAD') do xcopy "%%A" "C:\git_changed_files\"
于 2013-09-17T12:32:25.297 回答