2012-07-18 149 views
2

我有一个主文件(File1.txt),其中一些名称保留在内容中。我必须找到文件夹中具有这些名称(通配符)的所有文件,并使用批处理文件程序将它们移动到不同的文件夹。从文件内容复制文件的批处理文件

如:File1.txt有内容

abcd 
    efgh 

现在的文件夹中说c:\temp\Source我有文件,就像

12abcd34.asc 
56efgh78.asc 
testing.asc 

我要搬到只有2个文件到文件夹说C:\ TEMP \目标。

这是我的代码,但它给出错误说我* * *在这个时候是意想不到的。你能帮忙吗?

@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

在批处理文件中,'%i'必须有%加倍,如'%% i'。 – lavinio 2012-07-18 23:12:27

回答

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。 。包括bug修复...

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 

希望这会有所帮助。

+0

哇!感谢您的快速响应和帮助。其实我的第一个错误是file1.txt不在批处理文件所在的位置。他们在2个不同的地方,当我尝试%时,它说没有找到文件。 – kissac 2012-07-18 23:35:24

+0

感谢Prashant Gupta,这是非常有帮助! – kissac 2012-07-18 23:41:37

+0

很高兴成为服务kissac – chkdsk 2012-07-18 23:58:42