Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在findstr中查找带有空格的文件_Batch File_Findstr - Fatal编程技术网

Batch file 在findstr中查找带有空格的文件

Batch file 在findstr中查找带有空格的文件,batch-file,findstr,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

我有这个批处理代码,它只在文件名中没有空格时才起作用。 我怎样才能找到名称中包含空格的文件

@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
  • 如果批处理在当前目录中,它也将传输自身和 包含登录数据的file.tmp
  • findstr/G选项可以更多地处理存在性检查 有效地针对当前文件夹的目录
  • 要从传输中排除批次本身,请插入额外的
    ^ | find/V“%0”

@echo关闭
设置“Host=localhost”&如果“%~1”neq“设置”Host=%~1”
设置“User=user1”&如果“%~2”neq“设置”User=%2”
设置“Pass=user1”&如果“%~3”neq“设置”Pass=%3”
(echo.open%主机%
echo.user%用户%%Pass%
echo.dir
回声,再见
)>file.tmp
FTP-n output.tmp
Del file.tmp
(echo.open%主机%
echo.user%用户%%Pass%
对于(*.*)中的%%A,请执行以下操作:退出“%%A”
回声,再见
)>file.tmp
FTP-n FTP.log
DEL file.tmp
DEL output.tmp
后藤:EOF
:存在
Echo:%~1 | Findstr/I“\.tmp$\.cmd$”>num2>&1&&Goto:Eof
Findstr/I“%~1”output.tmp>num2>&1 | | ECHO.put“%~1”

确实调用:Existe“%%A”
并相应地调整
%1”
的实例。使用空格非常有效,问题是它们会覆盖FTP中已经存在的文件,/G:不起作用。他们在同一个目录下我正在调查,我需要知道目录输出的情况,你能不能把你的问题包括在一个样本中(如果必要的话,可以中和)?没有完整的意义,大豆新产品,一切都很好,仅查找已包含在输出中的文件会重新覆盖Danielle抱歉-我的逻辑有缺陷,可能远程目录包含其他信息-因此这与本地文件名不匹配。我通过额外的检查和引用文件名来克服空格问题,将上述批次恢复为您的方法。您可以选择通过cmd行参数传递主机、用户和密码。非常感谢!我感谢你的帮助,这对我帮助很大,我找到了解决问题的方法。我一个接一个地改变了echo.dir。!带有远程文件夹地址的DIR/B/A-D
:Existe
    Findstr /I /c:"%1" output.tmp > nul
    IF NOT %ErrorLevel% == 0 ECHO.put "%1" >>file.tmp
@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"