在findstr中查找带空格的文件

时间:2017-07-31 18:24:17

标签: batch-file 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 个答案:

答案 0 :(得分: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"