首先是我的初学者。我想创建批处理文件来搜索特定的文件夹(包括所有它的子文件夹)并复制其中的所有文件,除了那些文件名包含一些特定的字符串,这是我到目前为止
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% *。*所以如何将其反转以使其相反,请帮助我,请提前感谢
答案 0 :(得分: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正则表达式逃脱\
。 Vista需要\\\\
,但XP和Win 7使用\\
。适用于所有平台的唯一表示形式是[\\]
。有关详细信息,请参阅What are the undocumented features and limitations of the Windows FINDSTR command?。
答案 1 :(得分: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"
应该适合你。