我是批量编程的绝对新手。我经过一些搜索后发布了这个问题。请指导我。 我有一个包含一千个图像的文件夹:
000001_x_abc1.jpg
000001_x_efg1.jpg
000001_x_hij1.jpg
000002_x_abc1.jpg
000002_x_efg1.jpg
000002_x_hij1.jpg
.
.
.
.
234562_x_abc2.jpg
234562_x_efg2.jpg
234562_x_hij2.jpg
这些文件中我生成了一个'文件列表'我需要根据部分名称,即数字ID - 文件名中的前6个数字值,例如234562 * .jpg,并将它们复制到目标文件夹。
注意:每个基于数字ID的搜索都应该给我3个文件,我需要复制这三个文件。任何帮助将不胜感激。
我根据搜索尝试了以下代码:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "DEST_DIR=my_desination"
SET "SEARCH_DIR=my_source"
FOR /F "tokens=*" %%a IN (%~dp0my_list.txt%) DO (
FOR /R "%SEARCH_DIR%" %%f IN (*%%a*) DO (
SET "SRC=%%~dpf"
SET DEST=!SRC:%SEARCH_DIR%=%DEST_DIR%!
xcopy /S /I "%%~f" "!DEST!"
)
)
我的列表文件如下:
002631_*.jpg 054741_*.jpg 054992_*.jpg 055053_*.jpg 055054_*.jpg 055118_*.jpg 055267_*.jpg 055294_*.jpg 055382_*.jpg 055415_*.jpg 055466_*.jpg 055546_*.jpg
答案 0 :(得分:1)
这是将特定文件复制到文件夹的示例。
@ECHO OFF
set "SOURCE_DIR=%userprofile%\Desktop\Source"
set "DEST_DIR=%userprofile%\Desktop\Output"
set "FILENAMES_TO_COPY=test.txt test1.txt test2.txt"
pushd "%SOURCE_DIR%"
for %%F IN (%FILENAMES_TO_COPY%) do (
echo file "%%F"
xcopy /Y "%%F" "%DEST_DIR%\"
)
popd
pause
该脚本将test.txt
test1.txt
和test2.txt
从文件夹Source
复制到文件夹Output
查看this页
答案 1 :(得分:0)
假设列表文件每行包含一个完整的文件模式,以下内容适用于您:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem Define constants here:
set "SOURCEDIR=D:\Data"
set "TARGETDIR=D:\BackUp"
set "LISTFILE=D:\files.lst"
cd /D "%SOURCEDIR%" || exit /B 1
for /F "usebackq delims= eol=|" %%L in ("%LISTFILE%") do (
for /F "delims= eol=|" %%F in ('dir /B "%%L"') do (
copy "%%~F" "%TARGETDIR%\%%~nxF"
)
)
endlocal
exit /B
答案 2 :(得分:0)
(已编辑以反映问题中的其他信息)
for /f %%a in (partial.txt) do copy %%a "x:\destination folder\"
将文本文件中的每个条目复制<entry from textfile>
到目的地。
有关详细信息,请参阅for /?