我有一个主文件(File1.txt
),其中的内容中保留了一些名称。我必须在文件夹中找到所有具有这些名称(通配符)的文件,并使用批处理文件程序将它们移动到不同的文件夹。
例如:File1.txt
有内容
abcd
efgh
现在在文件夹中说c:\temp\Source
我有像
12abcd34.asc
56efgh78.asc
testing.asc
我必须将这两个文件只移动到一个文件夹,例如c:\ temp \ Target。
这是我的代码,但它给出了错误,说i *。*此时是意料之外的。你能帮忙吗?
@Echo Off
title Test move files
set dir1=C:\temp\Source
dir %dir1%
Echo Directory Changed
FOR /f "eol=; delims=, " %i in (file1.txt) do move /y "*%i*.*" Target
答案 0 :(得分:1)
你走了......
这就是我开始时的目录结构...
C:\Temp>tree /f
Folder PATH listing for volume OS
Volume serial number is XXXX-XXXX
C:.
│ file1.txt
│ run.bat
│
├───Source
│ 12abcd34.asc
│ 56efgh78.asc
│ testing.asc
│
└───Target
这是我稍后会运行的run.bat ..包括错误修复...
C:\Temp>copy run.bat con
@Echo Off
title Test move files
set dir1=Source
dir %dir1%
Echo Directory Changed
FOR /f "eol=; delims=, " %%i in (file1.txt) do move /y "%dir1%\*%%i*.*" Target
1 file(s) copied.
现在我运行批处理文件......
C:\Temp>run.bat
Volume in drive C is OS
Volume Serial Number is XXXX-XXXX
Directory of C:\Temp
19/07/2012 00:03 <DIR> .
19/07/2012 00:03 <DIR> ..
18/07/2012 23:59 0 12abcd34.asc
18/07/2012 23:59 0 56efgh78.asc
18/07/2012 23:59 0 testing.asc
3 File(s) 0 bytes
2 Dir(s) 41,653,194,752 bytes free
Directory Changed
C:\Temp\Source\12abcd34.asc
1 file(s) moved.
C:\Temp\Source\56efgh78.asc
1 file(s) moved.
现在这是最终目录结构......所以你可以看到它正在运行......
C:\Temp>tree /f
Folder PATH listing for volume OS
Volume serial number is XXXX-XXXX
C:.
│ file1.txt
│ run.bat
│
├───Source
│ testing.asc
│
└───Target
12abcd34.asc
56efgh78.asc
这是你需要的for循环......
FOR /f "eol=; delims=, " %%i in (file1.txt) do move /y "%dir1%\*%%i*.*" Target
的变化:
[1] within FOR you use %%i not %i.
[2] You need this format:
%dir1% <-- Where
\ <-- path delimiter
* <-- starts with anything
%%i <-- contains what you want to search
*.* <-- ends with anything
希望这有帮助。