所以,我从这里开始:
copy | dir /s /b | find "myFile" C:\Destination
但是问题是目标在此命令中不可见。它只会看到命令的第一部分,直到C:\ Destination。
有没有一种方法可以搜索文件并复制它?
我也尝试过这个:
SET source = dir /s /b | find "myFile"
SET destination = %CD%
copy %file% %destination%
但是它不起作用。
有时甚至试图设置一个指向当前目录(%CD%
)的变量都行不通。
提前感谢!
PS:我正在寻找一种无需在计算机上安装任何新东西就可以工作的解决方案,这就是为什么我在考虑批处理文件。
我想我可以用VBscript来做到这一点,但是我不确定。如果有人认为这是更好的选择,请也张贴该答案。
经过几个小时的工作,我设法找到正确的命令组合以实现此目标。这是给大家的,希望对您有所帮助:
SET destination=%CD%
E:
for /f "delims=" %%a in ('dir /b /s ^| find "searchedFile"') do (
cd ..
xcopy "%%a" "%destination%" /D:10-10-2011)
pause
我使用了更改目录命令,因为“目录”命令返回了整个路径,包括文件,并且在尝试将其复制时。它认为文件位于包含其名称的路径中。
例如,如果我在“ E:\ Folder \ New Folder \ myFile.jpg”中搜索“ myFile.jpg”,则认为文件的位置为“ E:\ Folder \ New Folder \ myFile.jpg \ myFile.jpg”,显然这是行不通的。
dir/s/b|for /f %i in ('find "myFile"') do copy "%i" .\
对我来说很好。任何人都知道如何使用同一行将相同的命名文件复制到具有新名称的目录中。例:文件名是:text.txt上面的命令行搜索许多文件夹并复制找到的所有实例,如下所示:1text.txt,2text.txt,3text.txt
将文件路径放在引号中
copy "%file%" "%destination%"
或
SET destination = "%CD%"
怎么样?
dir / s / b |对于('find“ myFile”')中的/ f%i确实复制%i。\
猜也应该引用%i ...
dir / s / b |对于('find“ myFile”')中的/ f%i,确实复制了“%i”。\