2014-02-20 3 views
1

Когда я запускаю следующие строки:Проблемы с дополнительным пространством, когда пересылают переменные в текстовый файл

set "Loc=%~dp0" 
echo %Loc% > C:\PLACE\LOCFILE.txt 

я получаю следующее в LOCFILE:

C:\BATCHLOC 
     ^
     Note Space 

Я пытаюсь использовать% Loc%, как это в отдельный пакетный файл:

(
set /p Loc= 
)<C:\PLACE\LOCFILE.txt 
) 
call "%Loc%\FILENAME.bat" 

Но пространство губит путь, и так, то вызов ком mand не работает. Кто-нибудь знает, как это исправить, (остановите его от создания пространства в конце)?

ответ

3
echo %Loc% > C:\PLACE\LOCFILE.txt 
      ↑ 
    This space is written to the file. 

Фикс:

echo %Loc%> C:\PLACE\LOCFILE.txt 
+0

Спасибо, это исправило мою проблему! Я отлично провел время на этом сайте, мне нравятся быстрые и точные ответы! – Noodlebear

+2

Это произойдет, если LOC = 3 – foxidrive

3

Это более надежный.

>"C:\PLACE\LOCFILE.txt" echo(%Loc% 

Перенаправление на остановках начинается номера, как в 3,4,5 %loc% от взлома кода, когда перенаправление непосредственно на конце (например, как показано ниже).

При использовании нижеприведенной техники конструкции, такие как test 2 в %loc%, также потерпят неудачу.

Это потому, что одиночные цифры в конце интерпретируются как указатели потока, поэтому цифры с 0 по 9 являются проблемами при размещении непосредственно перед символом перенаправления (> или >>).

не используйте:echo %Loc%> C:\PLACE\LOCFILE.txt

Дополнительные советы:

echo( защищает от других сбоев в эхо-команды и ( характер был испытан как наименее проблемного характера при использовании в сюда.

двойные кавычки, " диска: \ путь \ имя_файл " также защитить от длинных элементов имен файлов, таких как пространства, а также & характера.

+0

Даже 1 и 2 сломаются, но по-другому. – Joey

+0

Спасибо @joey Я добавил дополнительную информацию. – foxidrive

Смежные вопросы