我有一个带数千张照片的驱动器。我已将所有内容复制到另一个驱动器中,在此驱动器中,我几个月来一直在缓慢地整理它们。我发现了大量损坏的文件,但发现在原始驱动器上它们没有损坏。
我想做的是拥有一个批处理文件,该文件将从文本文件中读取文件名,并在原始驱动器中搜索文件名,然后将其复制到指定的文件夹中。
由于原始驱动器未排序,因此可能有重复,因此我想将该文件名的所有副本都复制到新文件夹中。我有一个脚本可以执行此操作(请参见下文),但由于文件名太长,它似乎无法正常工作。例如,“ 2008-06-27 02.06.37.jpg
” ...脚本将搜索“ 2008-06-27
”而不是完整文件名。
有关如何解决此问题的任何想法?
到目前为止,这是我目前无法正常工作的工作:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
cls
set dest=F:\ERRORS\recovered
for /f %%f in (F:\ERRORS\errorlist.txt) do (
set i=1
for /f "tokens=*" %%F IN ('dir /S /B /A:-D "%%f"') Do (
for %%N in ("%%F") Do (
set name=%%~NN
set ext=%%~XN
)
copy "%%F" "%dest%\!name!_!i!!ext!"
set /A i=!i!+1
)
)
ENDLOCAL
那是什么错误呢?它不应该做什么?
—
DavidPostill
而不是搜索“ 2008-06-27 02.06.37.jpg” ...它只会读取“ 2008-06-27”,却一无所获。一旦碰到文件名中的空格,它就不会读取该点之后的名称。
—
JMasters
仍然没有运气。问题似乎在“ for / f“ tokens = *” %% F IN('dir / S / B / A:-D“ %% f”')“行中,而%% f仅读取文本中的文件名,而不是全名,因为文件名中有空格。
—
JMasters
请编辑您的问题并添加一小部分
—
JosefZ,2017年
F:\ERRORS\errorlist.txt
文件(2至4行就足够了)。