在 findstr 中查找带空格的文件
Find files with spaces in findstr
我有这个批处理代码,它只在文件名中没有 space 时有效。
我该怎么做才能同时找到名称中包含 spaces 的文件?
@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
- 如果批次在当前目录中,它也会自行转移并
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"
我有这个批处理代码,它只在文件名中没有 space 时有效。 我该怎么做才能同时找到名称中包含 spaces 的文件?
@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
- 如果批次在当前目录中,它也会自行转移并 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"