从路径中删除空格

时间:2012-03-29 20:29:31

标签: batch-file

Setlocal enabledelayedexpansion
localDirectoryPath=d:/folder/subfolder
set /p AHFilename=<%fileName%
set pathname=!localDirectoryPath!\!AHFilename!
echo pathname=!pathname!

回显时的路径名,输出为d:/folder/subfolder /fileName,即子文件夹和/之间有空格,因此路径名的路径变得不可访问。命令提示符下显示的错误是“d:/ folder / subfolder”不存在。

请帮忙。如果删除了所述空格,则代码可以正确运行。

3 个答案:

答案 0 :(得分:1)

你确定在这一行之后没有空格:`localDirectoryPath = d:/ folder / subfolder

我没有批处理知识,但你的代码是否运行?我错过了%fileName%变量的设置,我认为你在第二行前面缺少一个SET调用,你应该在&#34; set pathname&#中用/替换\ 34;线。我想......难道不应该是这样的:?

Setlocal enabledelayedexpansion
SET localDirectoryPath=d:/folder/subfolder
set fileName=d:/someFile.txt
set /p AHFilename=<%fileName%
set pathname=!localDirectoryPath!\!AHFilename!
echo pathname=!pathname!

答案 1 :(得分:1)

除了偶然的拼写错误之外,我的工作原理正常:

  • - 您需要'set'才能使localdirectorypath声明正常工作。
  • - 您在localdirectory和pathname中混合了反斜杠和正斜杠。

    选择一个。您使用的文件系统是什么?

  • - 设置AHFilename时使用重定向将为您提供混合结果。

在Windows XP设备上为我工作的更正代码:

Setlocal enabledelayedexpansion
set localDirectoryPath=c:\folder\subfolder
set /p AHFilename=%fileName%
set pathname=!localDirectoryPath!\!AHFilename!
echo pathname=!pathname!

如果这仍然不适合您,您可以使用引号封装变量和数据:

set "localDirectoryPath=c:\folder\subfolder"

如果仍然无效,您可以在使用它的位置从localdirectorypath数据中删除最终字符:

set pathname=!localDirectoryPath:~0,-1!\!AHFilename!
echo pathname=!pathname!

答案 2 :(得分:1)

正如其他人所指出的那样,您发布的代码无法运行。它当然不能在subfolder\之间引入空格。

但是,如果你的变量在文件夹和/或文件名的末尾有不需要的空格,那么很容易摆脱它们。

Windows不允许文件或文件夹名称的最后一个字符为点或空格 - 如果您尝试创建它,Windows将从名称中删除尾随点和空格。但像DIR这样的命令不会忽略尾随空格。

D:\>mkdir "my folder "

D:\>dir "my folder "
 Volume in drive D has no label.
 Volume Serial Number is F8FD-5039

 Directory of D:\my folder

File Not Found

D:\>dir "my folder"
 Volume in drive D has no label.
 Volume Serial Number is F8FD-5039

 Directory of D:\my folder

03/29/2012  06:00 PM    <DIR>          .
03/29/2012  06:00 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  67,054,551,040 bytes free

您可以使用参数或FOR变量修饰符从路径名中修剪错误的尾随点或空格。修饰符将名称转换为标准格式,包括从路径中的每个文件夹名称中删除尾随点和/或空格。

@echo off
set "myVar=my folder "
echo this will fail because of space at end of path
dir "%myVar%"
echo(
echo The ~f modifier strips the trailing space
for %%F in ("%myVar%") do dir "%%~fF"

以下是上述脚本的结果

this will fail because of space at end of path
 Volume in drive D has no label.
 Volume Serial Number is F8FD-5039

 Directory of D:\my folder

File Not Found

The ~f modifier strips the trailing space
 Volume in drive D has no label.
 Volume Serial Number is F8FD-5039

 Directory of D:\my folder

03/29/2012  06:00 PM    <DIR>          .
03/29/2012  06:00 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  67,054,551,040 bytes free