Войти

Показать полную графическую версию : [решено] Не удается создать паузу в однострочной команде


PhantomLo
29-09-2012, 21:49
Выполняя команду DxDiag /T столкнулся с проблемой что директория необходимая для сохранения лога имеет пробелы. Если прибегнуть к форме DxDiag /t "[полный путь]" то команда и вовсе не срабатывает.
Решил прибегнуть к созданию файла в корне диска и копированием его куда надо при помощи XCOPY, но вот незадача... XCOPY выполняется раньше чем создается DxDiag.txt

Пробовал делать вот так, но в консоли пинг не выполняется и сразу выполняется XCOPY. Как можно добиться одной строчкой создание паузы в процессе выполнения
DxDiag /t E:\DxDiag.txt | ping -n 10 127.0.0.1 >nul | echo F|XCOPY E:\DxDiag.txt D:\DxDiag.txt

П.с.
Одна строчка нужна чтобы не создавая батника выполнить команду сразу в консоли

Iska
30-09-2012, 00:54
PhantomLo, разделителем команд является символ амперсанда — «&». То, что используете Вы, к месту и не к месту, зовётся конвейером и служит для передачи stdout одного приложения в stdin другого.

1. Самый простой выход — использовать короткое имя пути. Например, для «E:\Some Path With Spaces» это может быть «E:\SOMEPA~1» и т.п. (реальное короткое имя пути смотрите по «dir /x»):
dxdiag.exe /t E:\SOMEPA~1\DxDiag.txt
2.
dxdiag.exe /t e:\DxDiag.txt & (copy "e:\DxDiag.txt" "E:\Some Path With Spaces\" && del "e:\DxDiag.txt")
Отчего Вы решили пользовать «xcopy.exe» вместо «copy»?!




© OSzone.net 2001-2012