在多个.txt文件中查找字符串

时间:2016-09-16 14:19:39

标签: windows batch-file findstr

我有一个包含许多.txt个文件的文件夹。我想在所有这些文件中找到字符串"X",然后我想将找到的字符串复制到.txt个文件中。

到目前为止,我已经尝试过:

@echo on
findstr /m "X" "%userprofile%\Desktop\New_Folder\New_Folder\*.txt"
if %errorlevel%==0 do (
for %%c in (*.txt) do (
type %%c >> "%UserProfile%\Desktop\New_Folder\%%~nc.txt"
pause

我不理解输出%%~nc.txt部分它将更改后的.txt文件复制到具有相同名称的新文件夹。

我想指出字符"X"位于.txt文件的不同位置。

3 个答案:

答案 0 :(得分:2)

这个批处理文件可以解决问题(-_°)

所以,试一试: ScanfilesWordSearch_X.bat

RewriteEngine On    # Turn on the rewriting engine
RewriteRule    ^SignUp/?$    signup.php    [NC,L]    # Handle requests for "SignUp"

答案 1 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "mystring=x"
FOR %%a IN ("%sourcedir%\*.txt") DO FINDSTR "%mystring%" "%%a">nul&IF NOT ERRORLEVEL 1 FINDSTR "%mystring%" "%%a">"%destdir%\%%~nxa"

GOTO :EOF

您需要更改sourcedirdestdir的设置以适合您的具体情况并正确设置mystring,并指出您可能需要调整findstr切换为容纳case,literal和space-in-target-string。

当然,您可以直接将sourcedir等编码为文字,但这样做意味着只需要在一个地方更改相关字符串。

答案 2 :(得分:0)

您已经离我很近了,但是检查ErrorLevel findstr这里没有任何意义,因为这反映了总体结果,即ErrorLevel设置为0 case 任何文件都包含搜索字符串。

我会使用findstr /M循环解析for /F的输出并复制正文中的返回文件:

for /F "eol=| delims=" %%F in ('
    findstr /M /I /C:"X" "%USERPROFILE%\Desktop\New_Folder\New_Folder\*.txt"
') do (
    copy "%%F" "%USERPROFILE%\Desktop\New_Folder\"
)

这将复制包含文字搜索字符串的所有文件(以不区分大小写的方式)。