Параметр конкатенации цикла / f - PullRequest
0 голосов
/ 28 ноября 2018
@echo off
setlocal enableextensions enabledelayedexpansion
title Testing
color 4f

for /l %%x in (1,1,3) do (
  rem This is working
  set var1=%%x.extention
  echo !var1!
  for /f "tokens=2 delims==" %%a in (
      'wmic datafile where "name='C:\\Windows\\System32\\notepad.exe'" get version /value') do (
      ::This is NOT working. WHy??
      set var2=%%a.exention
      )

  echo !var2!

)

@pause

Может кто-нибудь помочь мне, пожалуйста?Я пытаюсь объединить некоторые переменные, for-loop параметры и строки.Проблема заключается в получении строки в конце параметра цикла.Строка .extention в set var2 отображается со строкой .extension первой, а не последней, как я хочу.

1 Ответ

0 голосов
/ 28 ноября 2018

Проблема в том, что вывод команды wmic представляет собой текст Unicode, а for /F возникли проблемы с преобразованием его в текст ANSI, поэтому некоторые возвраты осиротевшего кареткиосталось символов, что делает ваш вывод довольно странным.Вы можете доказать это, перенаправив вывод вашего пакетного скрипта в файл и просматривая его в шестнадцатеричном виде.редактор.

Чтобы решить эту проблему, оберните другой цикл for /F, например:

for /F "delims=" %%b in ('
    wmic DataFile where "Name='C:\\Windows\\System32\\notepad.exe'" get Version /VALUE
') do for /F "tokens=2 delims==" %%a in ("%%b") do (
    echo(%%a.extension
)

NB:
Не используйте комментарий :: в стиле блоков илипетли, поскольку они могут вызвать неожиданное поведение;используйте взамен rem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...