我正在尝试找出与批处理文件位于同一文件夹中的文件。
文件夹中的文件就像
123.pdf 124.pdf 125.pdf 126.pdf
要检查的文件在nr.txt文件中列出,例如 124.pdf 126.pdf
如果文件存在,则应将文件复制到另一个文件夹nr,该文件夹与批处理位于同一文件夹,例如%〜dp0 \ nr \
这是我到目前为止得到的
@echo off
SET m=0
for /f %%G in ('dir *.pdf /b') do (for /f %%i in (nr.txt) do (
if %%i==%%G (
echo %%i found
::copy %%i %~dp0\nr\
) else (
SET m=1
echo %m%
)
)
if %m%==1 (
echo %%i not found
SET m=0
)
)
pause
我的问题是,SET m = 1没有设置变量。
预先感谢您的帮助
编辑:
谢谢,我越来越近了。
@echo off
SETLOCAL EnableDelayedExpansion
SET m=0
for /f %%i in (nr.txt) do (for /f %%G in ('dir *.pdf /b') do (
if /I %%i==%%G (
echo %%i found
) else (
SET m=1
)
)
if !m!==1 (
echo %%i not found
SET m=0
)
)
pause
H:\Neuer Ordner (2)>check.bat
123.pdf found
123.pdf not found
126.pdf found
126.pdf not found
128.pdf not found
问题是,它仍然告诉我它找不到123.pdf,但确实存在。它找到了一次。
我尝试切换for循环,但问题相同。
问题是,它将遍历Dir中的所有文件并进行匹配。它将匹配但始终不匹配。我知道如何在文件存在的情况下仅显示查找消息吗?
非常感谢您
答案 0 :(得分:0)
您可能可以从这样的批处理文件中进行操作:
@For /F Delims^=^ EOL^= %%A In ('Type "nr.txt"') Do @XCopy "%%~A" "nr\" /Y >Nul 2>&1
如果您想要不必要的Echo
是:
@Echo Off
For /F Delims^=^ EOL^= %%A In ('Type "nr.txt"') Do If Exist "%%~A" (
Echo %%A Found
XCopy "%%~A" "nr\" /Y >Nul 2>&1) Else Echo %%A Not Found
Pause