В предыдущем посте собрал подборку видео, а в этом постарался все повторить. Оказалось, что часть команд устарели (видеоролики хорошие, но старенькие), так что здесь еще и ссылки на мануалы с technet.microsoft.com
Environment Variables.aspx)
Using command redirection operators The & redirection operator duplicates output or input from one specified handle to another specified handle. For example ... (см. ниже)
If
goto
For
Using command redirection operators The & redirection operator duplicates output or input from one specified handle to another specified handle. For example ... (см. ниже)
If
goto
For
Shell Scripting: Basic Shell Scripting (firsr.*bat)J
In [ ]:
@rem This is my first script
:: This is analog of first line
@echo off
echo Wonderful World
@echo on
dir c:\
Shell Scripting: Redirection (redir.*bat)
In [ ]:
@echo off
for /F "tokens=1-4 delims/ " %%I IN ('DATE /t') DO SET mydate=%%J_%%K_%%L
echo this is yet anothe script >> append_%mydate%.txt
echo this is yet the second script >> append_%mydate%.txt
In [ ]:
@echo off
echo ^<body^> >> html.html
echo ^<h1^> >> html.html
echo This is some text ^<br^> >> html.html
echo ^<^/h1^> >> html.html
echo ^<^/body^> >> html.html
In [ ]:
@echo off
ping localhost >> ping.txt 2>&1
net use *\\servername\sharename >>ping.txt 2>&1
Все выполняется, но файл у меня записался в кодировке CP 866 (как в консоли)
In [ ]:
Обмен пакетами с pb [::1] с 32 байтами данных:
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Статистика Ping для ::1:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек
Обмен пакетами с pb [::1] с 32 байтами данных:
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Ответ от ::1: время<1мс
Статистика Ping для ::1:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек
Системная ошибка 67.
Не найдено сетевое имя.
Handle | Numeric equivalent of handle | Description |
---|---|---|
STDIN | 0 | Keyboard input |
STDOUT | 1 | Output to the Command Prompt window |
STDERR | 2 | Error output to the Command Prompt window |
UNDEFINED | 3-9 | These handles are defined individually by the application and are specific to each tool. |
The & redirection operator duplicates output or input from one specified handle to another specified handle.
For example, to send dir output to File.txt and send the error output to File.txt, type:
For example, to send dir output to File.txt and send the error output to File.txt, type:
In [ ]:
dir>c:\file.txt 2>&1
When you duplicate a handle, you duplicate all characteristics of the original occurrence of the handle.
For example, if a handle has write-only access, all duplicates of that handle have write-only access.
You cannot duplicate a handle with read-only access into a handle with write-only access.
For example, if a handle has write-only access, all duplicates of that handle have write-only access.
You cannot duplicate a handle with read-only access into a handle with write-only access.
Shell Scripting: The IF Statement
In [ ]:
@echo off
set name=%1
if .%name%.==.Bob. echo %name% and Bob are the same.
In [ ]:
@echo off
if exist "c:\bat" echo the file exists
In [ ]:
@echo off
copy "c:\bat\text doc with spaces in title.txt" "c:\bat\temp1.txt"
if errorlevel 0 if not error level 1 GOTO :worked
:Failed
echo the command filed
Goto :EOF
:worked
Echo the command was successful
Goto :EOF
goto (EOF - end of filescript)
Working with command extensions
If command extensions are enabled (that is, the default) and you use the goto command with a target label of :EOF, you transfer control to the end of the current batch script file and exit the batch script file without defining a label. When you use goto with the :EOF label, you must insert a colon before the label. For example:
goto :EOF
For a description of extensions to the call command that make this feature useful, see cmd in Related Topics.
If command extensions are enabled (that is, the default) and you use the goto command with a target label of :EOF, you transfer control to the end of the current batch script file and exit the batch script file without defining a label. When you use goto with the :EOF label, you must insert a colon before the label. For example:
goto :EOF
For a description of extensions to the call command that make this feature useful, see cmd in Related Topics.
Shell Scripting: Operators (op.*bat)
In [ ]:
@echo off
set /A no=0
:number
set /A no=%no%+1
echo %no%
echo ^<a href=http://www.images.com/image_%no%.jpg^>image_%no%^<^/a^>^<br^> >> image.html
if %no% LSS 11 GOTO :number
In [ ]:
#В видео ошибка, надо писать c кавычками:
... <a href="http://www.images.com/image_%no%.jpg"^> ...
In [ ]:
####Shell Scripting: Loops
In [ ]:
@echo off
for /f %%i in (c:\hosts.txt) DO @ping -n 1 %%i
вможно не читать строчки из файла, просто записать в скобках:
In [ ]:
@echo off
for /F "tokens=1-3" %%I IN ("localhost 127.0.0.1 server01") DO @ping -n 1 %%I
Не могу повторить пример, потому находим другие примеры вот отсюда ss64.com
In [ ]:
FOR /F "delims==" %G IN ('SET') DO @Echo %G
Распечатывает все имен переменных окружения..., а ниже пример оттуда же
In [ ]:
#To put the Windows Version into an environment variable
@echo off
::parse the VER command
FOR /F "tokens=4*" %%G IN ('ver') DO SET _version=%%G
:: show the result
echo %_version%
Shell Scripting: Arguments
In [ ]:
@echo off
if exist %1 copy %systemdrive%\%1 "%userprofile%"\desktop
после запуска запрашивает один аргумент с именем файла (папки?) для копирования
In [ ]:
@echo off
@echo The first argument is %1
@echo The second argument is %2
@echo The ZERO argument is filename itself %0
@echo Allt arguments is * instead digit %*
In [ ]:
####Shell Spricting: Environment Variables
В предыдущем посте Не знать windows shell scripting просто стыдно
In [ ]:
####Приложения
In [ ]:
F:\bat>set /?
Вывод, задание и удаление переменных среды cmd.exe.
SET [переменная=[строка]]
переменная Имя переменной среды.
строка Строка символов, присваиваемая указанной переменной.
Введите SET без параметров для вывода текущих переменных среды.
Изменение команды SET при включении расширенной обработки команд:
Если при вызове указать только имя переменной без знака равенства и значения,
команда SET выведет значения всех переменных, имя которых начинается
с указанной строки. Например:
SET P
Эта команда выведет значения всех переменных, имена которых начинаются с 'P'.
Если имя переменной не найдено в текущей среде, при возврате команда SET
установит значение ошибки ERRORLEVEL 1.
Команда SET не допускает использование знака равенства в имени
переменной среды.
Команда SET поддерживает два дополнительных ключа:
SET /A выражение
SET /P variable=[promptString]
Для продолжения нажмите любую клавишу . . . (или см. предыдущий пост)
In [ ]:
... еще из **set /?**
При включенной расширенной обработке команд доступны несколько переменных
среды, которые расширяются, но не отображаются в списке при вызове команды SET.
Значения этих переменных вычисляются динамически каждый раз при их извлечении.
Если пользователь явно задает переменные с одним из этих имен,
то это определение переопределяет соответствующее динамическое определение,
описанное ниже:
%CD% - заменяется строкой текущего каталога.
%DATE% - заменяется текущей датой с форматом команды DATE.
%TIME% - заменяется текущей датой с форматом команды TIME.
%RANDOM% - заменяется случайным десятичным числом в диапазоне от 0 до 32767.
%ERRORLEVEL% - заменяется текущим значением ERRORLEVEL
%CMDEXTVERSION% - заменяется текущим значением версии
расширенной обработки команд.
%CMDCMDLINE% - заменяется исходной командной строкой, которая вызвала
командный процессор.
%HIGHESTNUMANODENUMBER% - заменяется максимальным номером узла NUMA
на этом компьютере.
F:\bat>
Посты чуть ниже также могут вас заинтересовать
3 комментария:
Важная ссылка ... %~f1 - это "расширения" параметров.
подробно здесь: http://ss64.com/nt/syntax-args.html
Command Line arguments (Parameters)
Parameter Extensions
When an argument is used to supply a filename then the following extended syntax can be applied:
we are using the variable %1 (but this works for any parameter)
%~f1 Expand %1 to a Fully qualified path name - C:\utils\MyFile.txt
Сбор системных данных ПК через командную строку windows
http://cmd4win.ru/stati-i-materialy/90-izuchenie-sistemnoj-informaczii
Использование команд DRIVERQUERY, SYSTEMINFO, NLSINFO
F:\bat>DRIVERQUERY /?
DRIVERQUERY [/S [/U [/P []]]]
[/FO ] [/NH] [/SI] [/V]
Описание:
Эта команда позволяет администратору просмотреть список установленных
драйверов устройств.
Список параметров:
/S Подключаемый удаленный компьютер.
/U [\] Пользовательский контекст, в котором
должна выполняться эта команда.
/P [] Пароль для этого пользовательского
контекста.
/FO Формат выводимых данных.
Допустимые значения для данного параметра
"TABLE", "LIST", "CSV".
/NH Не отображать заголовки столбцов в
выходных данных.
Допускается только для форматов "TABLE" и "CSV".
/SI Отображение информации о подписанных
драйверах.
/V Отображение подробной информации.
Не применим для подписанных драйверов.
/? Вывод справки по использованию.
Примеры:
DRIVERQUERY
DRIVERQUERY /FO CSV /SI
DRIVERQUERY /NH
DRIVERQUERY /S /U /V
DRIVERQUERY /S /U \ /P /FO LIST
F:\bat>
Отправить комментарий