我有一个相对简单的任务。我必须将位于不同文件夹中的100个文件移动到一个文件夹中。到目前为止,我有一个脚本,如果我根据文件列表将文件从一个文件夹移动到另一个文件夹,将执行此操作。
@echo off
set Source=C:\IMAGES_SOURCE
set Target=C:\IMAGE_DESTINATION
set FileList=C:\ImageList.txt
echo.
if not exist "%Source%" echo Source folder "%Source%" not found & goto Exit
if not exist "%FileList%" echo File list "%FileList%" not found & goto Exit
if not exist "%Target%" md "%Target%"
for /F "delims=" %%a in ('type "%FileList%"') do copy "%Source%\%%a"
"%Target%"
:Exit
echo.
echo press the Space Bar to close this window.
pause > nul
因此,对于此实例,我创建了项目列表,而脚本将在源位置查找文件名,一旦找到它们,它就会将它们移动到目标位置。
我需要对此进行调整,以便读取文件的名称并尝试在文件夹列表中找到它们。
我试过的是将set Source更改为包含有效文件夹名称的单独列表:
set Source=C:\DirList.txt
但是当我这样做时,它不会复制图像。
知道怎么做吗?
答案 0 :(得分:0)
首先想到的是dir /S
,意味着它将使用dir
命令进行搜索。这是未经测试的,但你会明白这一点:
@echo off
cd /d C:\Images_source
setlocal enabledelayedexpansion
for /F "delims=" %%i in (C:\Imagelist.txt) do (
set var="%%i"
for /F "delims=" %%a in ('dir /B /S !var!') do echo copy "%%~fa" C:\Image_Destination
)
有关我使用的命令的更多信息,请从命令行for /?
和dir /?
一旦确信它只会复制您要复制/移动的内容,请在复制前删除echo
。