2015-05-22 2 views
0

Я не могу понять, почему это не работает. Я пытаюсь собрать список всех принтеров на машине, а затем создать сценарий для каждого принтера и добавить имя хоста в этот файл. Я планирую запустить этот запуск на каждом компьютере, чтобы мы знали, какие компьютеры должны быть в каждой группе печати для нового сервера печати Windows, который мы настраиваем.Переменная в Используется для пути в пакетном файле

Кодекс:

setlocal EnableDelayedExpansion 
net use z: PATH TO SHARE HERE (this part works) 
for /f "tokens=* USEBACKQ" %%1 in (`wmic printer get name`) do (
set str='' 
echo %str% 
set str=%%1 
set str=!str:\==! 
set str=!str: =! 
echo !str! 
echo "!str!.txt" >> test6.txt 
hostname 
hostname >> "!str!.txt" 
) 

Две линии

set str=!str:\==! 
set str=!str: =! 

должны вычистить пространства, и заменить \ в начале имени принтера, так что это будет допустимый путь к файлу. Кажется, они работают так, как ожидалось.

Выход из первого запуска цикла (остальные последуют этому примеру с другими именами принтеров и имеют такое же поведение)

ECHO включен.
WebExDocumentLoader
WW7L7NPWWZ1
Неверное имя файла, имя каталога или тома.

Эхо-сигнал для эха пустой! Str! Переменная
Следующая строка имя принтера в переменной
Вывод в файл test6.txt для этой переменной линии: «WebExDocumentLoader.txt»
имя хоста линейные выходы, как и ожидалось.

Последняя строка сводит меня с ума, потому что я не могу понять, почему «WebExDocumentLoader.txt» дает неверный синтаксис, когда он должен быть именем файла.

Я полностью в недоумении, почему это не будет работать :(

ответ

0
.... 
for /f "tokens=* USEBACKQ" %%1 in (`wmic printer get name`) do (
    for /f "delims=" %%a in ("%%1") do set "str=%%a" 
    .... 

Выход из wmic команды включает в фильме возврат каретки символ, генерирующий сообщение об ошибке. Дополнительный for удалит его перед присвоением значения переменной.

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