3

首先我是初学者。我想创建批处理文件来搜索特定文件夹(包括所有它的子文件夹)并复制其中的所有文件,除了那些文件名包含某些特定字符串的文件,这就是我到目前为止所拥有的

set now=fish        
set logDirectory="C:\Users\paiseha\Desktop\bb\"      
for /r %logDirectory% %%i IN (*%now%*.*) do (          
rem copy process goes here            
)       

假设我有 3 个文件

  C:\Users\fareast\Desktop\bb\one.txt  
  C:\Users\fareast\Desktop\bb\twofishtwo.txt  
  C:\Users\fareast\Desktop\bb\three.txt  

所以我只想复制文件 one.txt 和 three.txt,但它只复制第二个,我知道它是因为*%now% *.* 那么我怎样才能将它反转以便它反过来呢,请帮助我,在此先感谢

4

2 回答 2

5

尝试:

@ECHO OFF &setlocal
set "now=fish"        
set "logDirectory=C:\Users\paiseha\Desktop\bb"      
for /f "delims=" %%a in ('dir /a-d/b/s "%logDirectory%"^|findstr /riv "^.*[\\][^\\]*%now%[^\\]*$"') do (          
  rem copy process goes here            
)

编辑: \字符表示为,[\\]而不是\\因为 Vista FINDSTR regex escapes 的怪癖\。Vista 需要\\\\,但 XP 和 Win 7 使用\\。唯一适用于所有平台的表示是[\\]. 请参阅Windows FINDSTR 命令有哪些未记录的功能和限制?了解更多信息。

于 2013-07-11T06:33:24.577 回答
2
for /f "delims=" %%a in ('dir /a-d/s/b "%logDirectory%" ') do echo %%~nxa|findstr /i /L "%now%" >nul&if errorlevel 1 ECHO COPY "%%a"

应该为你工作。

于 2013-07-11T06:40:43.950 回答