2017-07-31 166 views
1

我有這個批處理代碼,它只在文件名中沒有空格時才起作用。 我能做些什麼來找到名稱中包含空格的文件?在findstr中查找包含空格的文件

@echo off 
echo.open localhost >file.tmp 
echo.user user1 user1 >>file.tmp 
echo.dir >>file.tmp 
echo.bye >>file.tmp 

FTP -n <file.tmp >output.tmp 
Del file.tmp 

echo.open localhost >file.tmp 
echo.user user1 user1 >>file.tmp 
FOR %%A IN (*.*) DO call :Existe %%A 
echo.bye >>file.tmp 

FTP -n <file.tmp >nul 
DEL file.tmp 
DEL output.tmp 
GOTO :EOF 

:Existe 
    Findstr /I %1 output.tmp > nul 
    IF NOT %ErrorLevel% == 0 ECHO.put %1 >>file.tmp 

我也這樣做,但它不工作

:Existe 
    Findstr /I /c:"%1" output.tmp > nul 
    IF NOT %ErrorLevel% == 0 ECHO.put "%1" >>file.tmp 
+1

'DO撥打:Existe 「%% A」'和調整的' 「%1」'相應實例。 – Compo

回答

1
  • 如果批量在當前目錄也將轉移本身 含file.tmp登錄數據。
  • findstr/G選項可以針對當前文件夾的目錄有效地檢查是否存在更多 。
  • 要排除從轉印批處理本身中插入附加的^|find /V "%0"

@echo off 
Set "Host=localhost" & If "%~1" neq "" Set "Host=%~1" 
Set "User=user1"  & If "%~2" neq "" Set "User=%~2" 
Set "Pass=user1"  & If "%~3" neq "" Set "Pass=%~3" 

(echo.open %Host% 
echo.user %User% %Pass% 
echo.dir 
echo.bye 
) >file.tmp 

FTP -n <file.tmp >output.tmp 
Del file.tmp 

(echo.open %Host% 
echo.user %User% %Pass% 
FOR %%A IN (*.*) DO call :Existe "%%A" 
echo.bye 
) >file.tmp 

FTP -n <file.tmp >ftp.log 
DEL file.tmp 
DEL output.tmp 

GOTO :EOF 

:Existe 
Echo:%~1|Findstr /I "\.tmp$ \.cmd$">NUL 2>&1 && Goto :Eof 
Findstr /I "%~1" output.tmp >nul 2>&1 ||ECHO.put "%~1" 
+0

非常好的作品與空格,問題是,他們覆蓋已經在FTP內的文件,/ G:不起作用。 他們在同一目錄 – Danielle

+0

我正在調查它,我需要知道如何dir輸出看,你可以[編輯](https://stackoverflow.com/posts/45422812/edit)你的問題包括樣品(如果需要中和)? – LotPings

+0

No entiendo lo que significa,soy nuevo en laprogramaciónen LOTE,一切工作正常,只是尋找已包含在輸出中的文件重新覆蓋它們 – Danielle

相關問題