1

Надеюсь, что кто-то может мне помочь, я запустил следующий скрипт в подпапке в поисках определенной строки. Затем он экспортирует текстовые имена в новый текстовый документ с именем Completed.txt. Однако я пытаюсь получить текстовый документ, в котором нет строки с именем Incomplete.txt. Это было бы легко, если бы я мог использовать

for /f %%i in not

Но этого не существует.

Вот что у меня так далеко.

@echo off
for /f %%i in ('findstr /i "Script" *.txt') do @echo %%i >> Completed.txt

Я попытался следующее, но это не удалось.

for /f %%i in ('findstr /i "Script" *.txt') do If %errorlevel%=5 @echo %%i >> Error.txt

3 ответа3

0

Эта партия сделала свое дело:

@echo off
set "Complete=Complete.txt"
Set "Incomplete=Incomplete.txt"
If exist "%Complete%" Del "%Complete%"
If exist "%Incomplete%" Del "%Incomplete%"
@for %%i in (*.txt) do (
    @findstr /i "Script" %%~i >nul && echo %%i --^> %%~fi >> "%Complete%" || echo %%i --^> %%~fi >> "%Incomplete%"
)
pause
0

PowerShell - это еще один способ. Это перебирает $ Directory, добавляя -recurse, если вы хотите, чтобы он углублялся и смотрел только на файлы с расширением .txt.

$Directory = "C:\Scripts\*"
$Completed = "C:\Tools\Completed.txt"
$Incomplete = "C:\Tools\Incomplete.txt"

$Files = Get-Childitem -Path $Directory -Include *.txt

Foreach ($File in $Files) {
    $FileContents = Get-Content $File
    if ($FileContents -contains 'Script') {
        Add-Content -Path $Completed -Value $File.Name
    } else {
        Add-Content -Path $Incomplete -Value $File.Name
    }

}
0

find_incomplete.bat

@echo 2>incomplete.txt
@for %%i in (*.txt) do @findstr /i "Script" %%~i > nul || echo %%i >> incomplete.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .