我有一个Windows启动笔,它在启动时运行批处理文件,它需要做的就是将文本文件中指定的大量文件列表从机器复制到启动笔。
我在制作启动笔之前在我的电脑上进行了一次测试,并认为这应该可行
@echo off
set DRIVE=c
for /F "tokens=*" %%a in (e:\test\files.txt) do call :amendDirectoryAndCopy %%a
pause
:amendDirectoryAndCopy
set DEST=%~1
set DEST=%DEST:~1%
echo set DEST=%DRIVE%%DEST%
echo xcopy %~1 %DEST%
它应该做的就是每个文件,删除字符串的第一个字符,在给出目标目录的开头添加“c”,然后执行xcopy。我发现输出混乱为“@echo set”DEST =%DRIVE %% DEST%“输出我期望的,C上的正确目录:例如
C:\测试\文件夹\ file.txt的
但xcopy输出
xcopy e:\ test \ folder \ file.txt:\ test \ folder \ file.txt
目的地缺少驱动器号。
答案 0 :(得分:0)
我认为需要SetLocal EnableDelayedExpansion
以及在变量扩展中替换!
的{{1}},以使您的代码正常工作。
我现在远离我的Windows机器,所以我无法测试语法,但是在我的脑海中,这样的事情应该有效:
%
这对你有用吗?