带有for / f的CMD中的空白问题

时间:2018-03-13 13:31:44

标签: batch-file cmd

我使用此代码,即拖动和放大将文件夹拖放到.bat文件:

set FILE_path="%~1"
for /f "usebackq" %%i in (%FILE_path%) do (
  set basename="%%~ni" 
)

echo %basename%
pause 99

它应显示文件夹/文件名,但显示错误

  

系统无法找到该文件。

如果我使用:

for /F "" %%i in (%FILE_path%) do @SET basename=%%~ni

然后当文件/文件夹包含空格时出现问题。 (它不会在第一个空格后输出名称。)

2 个答案:

答案 0 :(得分:0)

找到解决方案:

for /f "delims=" %%i in (%FILE_path%) do @SET basename="%%~ni"
echo %basename%

答案 1 :(得分:0)

为什么不使用它:

@If Not "%~1"=="" (Echo %~n1
    Timeout 99)

根据您提问中的代码和您提供的答案,您的版本看起来更像是这样:

@Echo Off
Set "FilePath=%~1"
For %%A In ("%FilePath%") Do Set "BaseName=%%~nA"
Echo=%BaseName%
Timeout 99