Что нового

[Данные, строки] командная строка, кавычки

artsiom82

Новичок
Сообщения
2
Репутация
0
Друзья не могу разобраться почему не работает cmd
Код:
For /F "tokens=1* delims==" %%a in ('wmic CSProduct GET UUID /value ^|find "-"') do set var=%%b 
SET var1=%computername% 
SET var2=%var1% %var:~-8% 
Find /I "hostname" "c:\1.txt" 1>nul||echo hostname=%var2%>>c:\1.txt

сделал вот так, но выдаёт ошибку...
Код:
$CMD = "'For /F "tokens=1* delims==" %%a in ('wmic CSProduct GET UUID /value ^|find "-"')  && '" &
       'SET var1=%computername%  && ' &
      'SET var2=%var1% %var:~-8%  && ' &
     'Find /I "hostname" "c:\1.txt" 1>nul||echo hostname=%var2%>>c:\1.txt'
     RunWait(@ComSpec & " /q /c " & $CMD,@ScriptDir,@SW_HIDE)

Выбивает ошибку
Код:
Unknown function name.:
$CMD = "'For /F "tokens=1* delims==" %%a in ('wmic CSProduct GET UUID /value ^|find "-"')  && '" &
$CMD = "'For /F "^ ERROR

Подскажите пожалуйста как правильно?
 

joiner

Модератор
Локальный модератор
Сообщения
3 338
Репутация
574
Код:
$CMD = 'For /F "tokens=1* delims==" %%a in' & "('wmic CSProduct GET UUID /value ^|find" & '"-") do set var=%%b && ' & _
        'SET var1=%computername% && ' & _
        'SET var2=%var1% %var:~-8% && ' & _
        'Find /I "hostname" "D:\1.txt" 1>nul||echo hostname=%var2%>>D:\1.txt && '
 
Автор
A

artsiom82

Новичок
Сообщения
2
Репутация
0
Код:
$CMD = 'For /F "tokens=1* delims==" %%a in' & "('wmic CSProduct GET UUID /value ^|find" & '"-") do set var=%%b && ' & _
        'SET var1=%computername% && ' & _
        'SET var2=%var1% %var:~-8% && ' & _
        'Find /I "hostname" "D:\1.txt" 1>nul||echo hostname=%var2%>>D:\1.txt && '
Спасибо, ошибку не выдаёт, но и не отрабатывает... подскажите пожалуйста, что может быть не так? Если этот же скрипт запуская через bat файл всё отлично...
 

joiner

Модератор
Локальный модератор
Сообщения
3 338
Репутация
574
Это код пакетного файла и передается он строкой, а нужно построчно. Думаю, что нужно через запись в батфайл. Либо использовать работу языка с админстративными инструментами. То есть, получить результат другим способом.
Сообщение автоматически объединено:

в итоге нужно получить UUID и имя компьютер(пользователя). можно так

Код:
Local $oService = ObjGet('winmgmts:\\.\root\cimv2')
If Not IsObj($oService) Then Exit
Local $oSystem = $oService.ExecQuery('SELECT * FROM Win32_ComputerSystemProduct')
If Not IsObj($oSystem) Then Exit
Local $UUID, $sName = @UserName & @LF & @ComputerName
For $Property In $oSystem
    $UUID = $Property.UUID
Next

MsgBox(0, '', $UUID & @LF & $sName)


в твоем случае в файл попадают данные UUID после последнего "-". в примере получаем полный UUID
 
Последнее редактирование:
Верх