убрать пробел с пути - PullRequest
0 голосов
/ 30 марта 2012
Setlocal enabledelayedexpansion
localDirectoryPath=d:/folder/subfolder
set /p AHFilename=<%fileName%
set pathname=!localDirectoryPath!\!AHFilename!
echo pathname=!pathname!

pathname при отражении, вывод d:/folder/subfolder /fileName, то есть между подпапкой и / есть пробел, следовательно, путь к pathname становится недоступным. ошибка, отображаемая в командной строке: «d: / folder / subfolder» не существует.

Пожалуйста, помогите. Если указанное пространство удалено, код может работать правильно.

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Работает нормально для меня, как есть, за исключением пары опечаток:

  • - вам нужно 'установить', чтобы сделать объявление localdirectorypath работающим.
  • -you 'Смешайте обратную и прямую косые черты в вашем локальном каталоге и пути.

    Выберите один.Какую файловую систему вы используете?

  • -Использование перенаправления при настройке 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!
1 голос
/ 30 марта 2012

Как уже отмечали другие, код, который вы опубликовали, не может быть запущен. И это, конечно, не может ввести пробел между 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
1 голос
/ 30 марта 2012

Вы уверены, что после этой строки у вас нет пробела: `localDirectoryPath = d: / folder / subfolder

Я не специалист по пакетным знаниям, но работает ли ваш код?Мне не хватает настройки переменной% fileName%, я думаю, что вы пропускаете вызов SET перед второй строкой, и вы должны заменить \ на / в строке "set pathname".Я думаю ... Разве это не должно быть что-то вроде этого:?

Setlocal enabledelayedexpansion
SET localDirectoryPath=d:/folder/subfolder
set fileName=d:/someFile.txt
set /p AHFilename=<%fileName%
set pathname=!localDirectoryPath!\!AHFilename!
echo pathname=!pathname!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...