使用Windows Batch For Loop的大多数示例都是关于使用“IN”。
FOR %%A IN (1 2 3 4) DO ECHO %%A
我需要使用NOT IN代替。当我输入的内容为:
FOR %%A NOT IN (1 2 3 4) DO ECHO %%A
它说“当时没有预料到”。
由于
答案 0 :(得分:0)
根据您的上述评论,您希望拥有“没有这些文件的DIR”? 然后这应该工作:
<强>&GT;输入donotuse.txt
alpha.txt
beta.exe
gamma.cmd
<强>&GT;输入t.bat
@dir /b | findstr /b /e /v /i /l /g:donotuse.txt
<强>&GT; dir / b
albetade.txt
alpha.exe
alpha.txt
beta.exe
donotuse.txt
gamma.cmd
t.bat
<强>&GT;吨强>
albetade.txt
alpha.exe
donotuse.txt
t.bat
&GT;
编辑:dbenham是对的。已将/i /l
添加到我的代码中。
答案 1 :(得分:0)
for %%F in ('dir /b /a-d "somepath\*"^|findstr /vilxg:"exclusions.txt"') do echo %%F
由于您在评论中表示要移动不在列表中的文件,因此应尝试使用ROBOCOPY
。查看/MOV
和/XF
选项。它应该允许您以更直接的方式完成您想要的操作。从命令行键入robocopy /?
以获取帮助。导航有很多选项,因此可能需要一段时间才能获得您想要的确切结果。但这个命令非常强大而且值得。
答案 2 :(得分:0)
比尔,这可能会做你需要的,或者给你一个提示......
@echo off
for /f "delims=" %%a in (' type "file.txt" ') do (
if not exist "c:\target\%%a" move "%%a" "c:\target"
)
答案 3 :(得分:0)
我遇到了同样的问题,但没有解决方案。 所以...这是我个人的,简单的解决方案:
@echo off
rem set the path to check
set sourcePath=C:\Program Files (x86)\MySoftware
set destPath=c:\temp\MySoftware-StrangerFiles
set tempPath=c:\temp
set currentFilesListTxtFileName=MySoftware-allfiles.txt
set correctFilesListTxtFileName=MySoftware-correctFilesList.txt
set moveFilesListTxtFileName=MySoftware-moveFilesList.txt
echo Move not allowed files in a different path
cd "%sourcePath%"
mkdir %destPath%
call :correctFilesList
dir /B > c:\temp\MySoftware-allfiles.txt
findstr /V /G:%tempPath%\%correctFilesListTxtFileName% %tempPath%\%currentFilesListTxtFileName% > %tempPath%\%moveFilesListTxtFileName%
for /f "delims=" %%a in (' type "%tempPath%\%moveFilesListTxtFileName%" ') do move %%a %destPath%
pause
:correctFilesList
rem files whitelist
rem correctfiles can be changed with "dir /B path>>c:\temp\correctFilesList.txt" from a correct source. Or you can generate a list of correct files via command as below.
echo correctfile1.dll>> %tempPath%\%correctFilesListTxtFileName%.txt
echo correctfile2.log.xml>> %tempPath%\%correctFilesListTxtFileName%.txt
echo correctfile2.log.xml>> %tempPath%\MySoftware-correctFilesList.txt