2017-08-18 40 views
0

所以,如果我跑FINDSTR,並沒有找到任何匹配的字符串離開這個奇怪的符號文件,而不是在:如果FINDSTR沒有找到任何它在文件中留下一個奇怪的符號

而且它確實是在的末尾幾乎所有我的文件都是。有沒有辦法擺脫它或阻止它發生?稍後我會檢查文件是否爲空或者是否設置爲真/假,並且該符號會影響結果。我在一個接一個地運行相同的程序中有很多檢查,我需要在它們之間做些什麼來阻止它?

作爲一個例子,該代碼沒有做到這一點:

ECHO Scanning files for Risks 
(
FOR /F "delims=" %%a in ('findstr /I /L "android:allowBackup android:backupagent" AndroidManifest.xml') DO (
    SET "line=%%a" 
    SET "line=!line:*android:allowBackup=!" 
    SET "line=!line:*android:backupagent=!" 
    FOR /F "delims=<" %%b in (!line!) DO ECHO %%b 
)) > ScanResults.txt 

但是這一個作用:

ECHO Scanning files for Risks 
(
FOR /F "tokens=1*delims=:" %%a in ('findstr /I /S "web" *.smali') DO (
    SET "line=%%b" 
    SET "line=!line:*web=!" 
    FOR /F "delims=<>" %%b in ("!line!") DO ECHO %%a:%%b 
)) > ScanResults.txt 

更新:即使有兩件事情加它仍然把怪異的符號成文本文件而不是空的

ECHO Scanning files for Risks 
    (
    FOR /F "tokens=1*delims=:" %%a in ('findstr /I /S "web" *.smali 2^>NUL') DO (
     SET "line=%%b" 
     SET "line=!line:*web=!" 
     FOR /F "delims=^<^>" %%b in ("!line!") DO ECHO %%a:%%b 
    )) > ScanResults.txt 

更新:爲了進一步闡明我正在搜索各種文件如前所述,最常見的是JSON和smali文件,以便仔細檢查我自己的工作。但真的它搜索了一切,代碼只是像上面的代碼一樣的一系列搜索,只需*.smali更改爲*.xml*.json或任何需要的。所以這是生產在其搜索怪異的符號代碼的部分看起來像這樣:

ECHO off 
SETLOCAL enabledelayedexpansion 

(
FOR /F "delims=" %%a in ('findstr /I /S "web" AndroidManifest.xml') DO (
SET "line=%%a" 
SET "line=!line:*web=!" 
FOR /F "delims=<>" %%b in ("!line!") DO ECHO %%b 
)) > ScanResults1.txt 

REM scans all JSON files 
(
FOR /F "tokens=1*delims=:" %%a in ('findstr /I /S "web" *.json') DO (
    SET "line=%%b" 
    SET "line=!line:*web=!" 
    FOR /F "delims=<>" %%b in ("!line!") DO ECHO %%a:%%b 
)) > ScanResults2.txt 

REM scans all html files 
(
FOR /F "tokens=1*delims=:" %%a in ('findstr /I /S "web" *.html') DO (
    SET "line=%%b" 
    SET "line=!line:*webv=!" 
    FOR /F "delims=<>" %%b in ("!line!") DO ECHO %%a:%%b 
)) > ScanResults3.txt 

REM scans all xml files 
(
FOR /F "tokens=1*delims=:" %%a in ('findstr /I /S "web" *.xml') DO (
    SET "line=%%b" 
    SET "line=!line:*web=!" 
    FOR /F "delims=<>" %%b in ("!line!") DO ECHO %%a:%%b 
)) > ScanResults4.txt 

REM scans all smali files 
(
FOR /F "tokens=1*delims=:" %%a in ('findstr /I /S "web" *.smali') DO (
    SET "line=%%b" 
    SET "line=!line:*web=!" 
    FOR /F "delims=<>" %%b in ("!line!") DO ECHO %%a:%%b 
)) > ScanResults5.txt 

COPY ScanResults1.txt + ScanResults2.txt + ScanResults3.txt + ScanResults4.txt + ScanResults5.txt ScanResultsA.txt 
DEL ScanResults1.txt 
DEL ScanResults2.txt 
DEL ScanResults3.txt 
DEL ScanResults4.txt 
DEL ScanResults5.txt 

:eof 

輸出文件看起來像:

enter image description here

這是怪異的符號我不斷收到時,它不找不到任何東西。如果將其複製並粘貼,我不得不保留它,所以我必須拍照。

+0

的一個明顯區別是,只有一個工作使用這種格式:'FOR/F [ 「選項」] %%參數IN( 「文本字符串處理」) DO命令' – Compo

+0

我建議你[編輯](https://stackoverflow.com/posts/45762959/edit)你的問題,包括一個真正的輸入文件的內容,你告訴我們的確切代碼輸出一個奇怪的符號以及帶有奇怪符號的輸出文件的真實內容。沒有這些東西,我並不期望你能得到一個解決方案,因爲你的問題很廣泛。 – Compo

+0

我儘可能多地添加了詳細信息,儘管如此,它仍然可以通過文件的搜索進行搜索,因此無法將所有查找的內容都放入測試用途中。我做了reclarify它通過什麼類型的文件,它正在尋找什麼,以及當它沒有找到任何東西時輸出什麼。讓我知道這是否有幫助。 – JustKay

回答

0

如果沒有發現,輸出應該是空的,沒有任何東西傳遞給for(代碼塊)
,但來自findstr本身的錯誤消息不會重定向到nul。

所以追加2^>NULfindstr

FOR /F "tokens=1*delims=:" %%a in ('findstr /I /S "web" *.smali 2^>NUL') DO (
相關問題