COPY,XCOPY,ROBOCOPY-将整个文件路径复制到完整文件夹路径

时间:2019-02-01 04:39:07

标签: batch-file copy robocopy xcopy

我正在尝试使用完整文件路径(大多数情况下是唯一的)列表(例如“ C:\ Folder1 \ file_1.xls”)复制到完整文件夹路径(例如“ C:\ DifferentFolder)”。 / p>

完整文件路径和完整文件夹路径都不同。通过将所有路径都放在引号中,我几乎成功地使用了COPY。

COPY "E:\California\CA_restaurants.pdf" "E:\Placestoeat\"
COPY "E:\California\CA_hotels.pdf" "E:\Placestostay\"
COPY "E:\Arizona\AZ_hotels.pdf" "E:\Placestostay\"

继续使用它的问题是,我发现在查看.bat文件完成前后的#个文件时,我仅获得大约95%的成功率。我不确定是什么问题,但是我正在考虑切换到Robocopy或xcopy,因为听说它们可以提供有关成功的反馈以及重命名重复文件的选项?

是的,我似乎无法使xcopy或robocopy都基于完整的文件名和完整的文件夹名来工作,因为它们都改变了每一行。

有人可以解释我做错了什么,还是可以提供示例脚本供我尝试?我不是技术人员,只是想找到一种方法来提高我平凡的历史数据项目的效率。

1 个答案:

答案 0 :(得分:0)

如果打开cmd.exe并键入xcopy /?,您将看到所有有效的开关,我不确定您尝试了哪些xcopy命令,但这无疑会起作用:

xcopy /Y "E:\folder paths\file.pdf" "E:\Placetostay"

但是我想知道为什么您需要将每一行添加到要复制的文件中?这是大量的手工工作,以至于手动复制它可能会更容易。那么为什么不自动化呢?

这里有一些想法。该脚本将在您的E:\驱动器上进行递归搜索,如果有任何文件与名称hotel相匹配,它将被复制到相关的目标位置,除非所搜索的文件位于目标位置,这仅仅是因为我们不想再次将文件复制到其自己的路径,显然,第二个选项也将对restaurants执行此操作:

酒店:

@echo off
for /f %%i in ('dir /s /b /a-d *.pdf ^| findstr /i hotel') do (
  if not "%%~dpi"=="E:\Placestostay\" xcopy "%%~fi" "E:\Placestostay"
)

餐馆:

@echo off
for /f %%i in ('dir /s /b /a-d *.pdf ^| findstr /i restaurant') do (
  if not "%%~dpi"=="E:\Placestostay\" xcopy /Y "%%~fi" "E:\Placestoeat"
)

显然,以上内容也可以组合。

然后,我们可以做同样的事情,但是让您提示用户输入搜索条件来选择要搜索的内容:

@echo off
set /p "search=Select search type (hotel, restaurant etc.): "
set /p "destination=Enter the destination to copy to (E:\placestoeat\ etc.): "
for /f %%i in ('dir /s /b /a-d *.pdf ^| findstr /i %search%') do (
  if not "%%~dpi"=="%destination%" xcopy /Y "%%~fi" "%destination%"
)

或者类似地,根据搜索来预定义目标文件夹:

@echo off
set /p "search=Select search type (hotel, restaurant etc.): "
if /i "%search%"=="hotel" set "destination=E:\placestostay\"
if /i "%search%"=="restaurant" set "destination=E:\placestoeat\"
for /f %%i in ('dir /s /b /a-d *.pdf ^| findstr /i %search%') do (
  if not "%%~dpi"=="%destination%" xcopy /Y "%%~fi" "%destination%"
)