Если я хочу запустить команду
md5deep -rb . | find /I ".jpg" | sort > local.md5
и я запускаю его из командной строки, он показывает точно так же, как я набирал, но когда я помещаю его в файл .bat и запускаю его, я вижу вот что:
md5deep -rb . | find /I ".jpg" | sort 1>local.md5
Кажется, что вкладки вставляет перед |
и получается >
в 1>
. Зачем? Сначала я подумал, что это как-то связано с кодировкой, но это простой файл ANSI.
Это имеет какое-либо отношение к @@
превращение @
внутри файлов .bat?
Не о чем беспокоиться. Просто так Windows CMD
парсер выводит строки, если вы не подавляете вывод "трассировки", используя:
@echo off
или
@commandname
Я не уверен, что вы имеете в виду @@
против @
(кроме, возможно, вышеуказанного). Я не знаю ничего особенного о @@
, если вы не путаете это с %%
против %
для имен переменных.
1> относится к тому, как стандартный выход перенаправляется внутри файла bat.
У вас есть два канала: один для стандартного вывода (1>) и один для стандартного вывода ошибок (2>). Они используют либо 1>, либо 2> для обработки и обеспечивают два разных типа обратной связи при выполнении. У меня есть этот список для разных перестановок перенаправления:
command > file Write standard output of command to file
command 1> file Write standard output of command to file (same as previous)
command 2> file Write standard error of command to file (OS/2 and NT)
command > file 2>&1 Write both standard output and standard error of command to file (OS/2 and NT)
command >> file Append standard output of command to file
command 1>> file Append standard output of command to file (same as previous)
command 2>> file Append standard error of command to file (OS/2 and NT)
command >> file 2>&1 Append both standard output and standard error of command to file (OS/2 and NT)
commandA | commandB Redirect standard output of commandA to standard input of commandB
commandA 2>&1 | commandB Redirect standard output and standard error of commandA to standard input of commandB (OS/2 and NT)
command < file command gets standard input from file
command 2>&1 command's standard error is redirected to standard output (OS/2 and NT)
command 1>&2 command's standard output is redirected to standard error (OS/2 and NT)
Это взято с отличного веб-сайта Роба ван дер Вуда, посвященного сценариям Win32: http://www.robvanderwoude.com/redirection.php
Роб