Ниже приведены некоторые полезные для системных администраторов команды, которые можно использовать в .bat-файлах и различных скриптах для автоматизации.
- Посмотреть ip-адреса сетевых интерфейсов:
netsh interface ip show address
- Поменять ip-адрес интерфейса с именем Internal на 192.168.1.42, установить маску подсети 255.255.254.0 (/23) и установить шлюз по умолчанию 192.168.1.1 с метрикой 1:
netsh interface ip set address name="Internal" static 192.168.1.42 255.255.254.0 192.168.1.1 1
- Установить для интерфейса с именем Internal DNS-сервера 192.168.1.10 и 192.168.1.11:
netsh interface ip set dns name="Internal" static 192.168.1.10 netsh interface ip add dns "Internal" 192.168.1.11
- Получить mac-адреса сетевых интерфейсов:
getmac
- Командый файл для закачки множества файлов с похожими именами (в результате в текущую директорию будут скачиваться файлы по ссылкам https://avz.org.ua/wp/films/Univer_1.avi, https://avz.org.ua/wp/films/Univer_2.avi, ..., https://avz.org.ua/wp/films/Univer_20.avi):
@echo off set URL=http://avz.org.ua/wp/films/Univer FOR /L %%I IN (1,1,20) DO wget %URL%_%%I.avi
Обратите внимание, что переменная цикла должна состоять из одной буквы, иначе работать не будет, выдавая ошибку типа "Непредвиденное появление: %Ind" (у меня полчаса ушло, чтобы понять в чем косяк, когда я пытался использовать Ind в качестве итератора :/ Зато help по команде FOR перечитал вдоль и поперек :) пока пытался постичь сей феномен). После этого с особой теплотой вспоминал bash, который как скриптовый язык намного удобнее и мощнее этого убогого поделия мелкомягких. Утилитку wget под windows можно скачать, например, здесь.
- Узнать размер файла: создаем файл, к примеру, с именем flen.bat следующего содержания
set FLEN=%~z1 echo %FLEN%
Запускаем файл flen.bat, передавая ему в качестве аргумента имя файла, размер которого хотим получить. Подробнее о конструкциях, подобных %~z1 можно почитать в справке по команде call, набрав в командной строке call /?
- Переименование файлов в текущем каталоге с заданным расширением так, чтобы имена образовали последовательность чисел, начиная с заданного:
@echo off if .%1==. goto usage set n=%2 if .%n%==. set n=0 set tempdir=$tmp$.$x$ mkdir %tempdir% for %%i in (%1) do call :renfile "%%i" move %tempdir%\%1 . >nul rmdir %tempdir% goto :EOF :renfile move %1 %tempdir%\%n%%~x1 > nul set /a n+=1 goto :EOF :usage echo USAGE: RENUM *.jpg ^
Конструкция %~x1 выделяет из переменной %1 (1-ый параметр командного файла) фрагмент имени файла, соответствующий его расширению (см. call /?). Метка :EOF означает конец файла.
- Экспортирование определённого раздела реестра в файл с именем putty.reg:
regedit /e putty.reg "HKEY_CURRENT_USER\Software\SimonTatham\PuTTY"
- Иногда бывает, что в Windows XP служба брандмауэра (Internet Connection Firewall) куда-то девается из списка служб и/или её невозможно запустить (вылазит сообщение об ошибке "Вследствие неопределенной ошибки не удается отобразить параметры брандмауэра Windows"). Восстановить службу "Брандмауэра Windows / Общий доступ к Интернету (ICS)" можно следующей командой:
Rundll32 setupapi,InstallHinfSection Ndi-Steelhead 132 %windir%\inf\netrass.inf
- Отключение административных общих ресурсов (C$, D$ и т.д.). При запущенной службе "Сервер" есть возможность при известном пароле пользователя с правами администратора получить по сети доступ к любому файлу на жестком диске. Конечно, такой доступ еще должен быть разрешен в брандмауэере. А поскольку многие не затрудняют себя установкой паролей более сложных, чем "123", и часто отключают встроенный в windows брандмауэер, такую возможность часто желательно отключать. Для отключения шаринга административных общих ресурсов следует запустить редактор реестра (regedit) и создать в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters параметр AutoShareWks типа DWORD и установить его значение в 0. Соответствующий .reg-файл можно скачать по ссылке выше.
- Ну и напоследок список системных переменных Windows
%ALLUSERSPROFILE% - размещение профиля «All Users»
%APPDATA% - используемое по умолчанию размещение данных приложений
%CD% - путь к текущей папке
%COMPUTERNAME% - имя компьютера
%ERRORLEVEL% - код ошибки последней использовавшейся команды. Значение, не равное нуля, обычно указывает на наличие ошибки
%HOMEDRIVE% - имя диска локальной рабочей станции, связанного с основным каталогом пользователя. Задается на основании расположения основного каталога
%LOGONSEVER% - имя контроллера домена, который проверял подлинность текущей сессии
%NUMBER_OF_PROCESSORS% - количество процессоров, установленных на компьютере
%OS% - имя операционной системы
%PROCESSOR_ARCHITECTURE% - архитектура процессора. Пока доводилось встречать значения: x86, IA64
%PROCESSOR_IDENTFIER% - описание процессора
%PROCESSOR_LEVEL% - номер модели процессора, установленного на компьютере
%PROCESSOR_REVISION% - номер модификации процессора
%RANDOM% - произвольное десятичное число от 0 до 32767 (работает в cmd.exe)
%SYSTEMDRIVE% - имя диска, содержащего корневой каталог Windows XP (т.е. системный каталог)
%SYSTEMROOT% - размещение системного каталога Windows XP
%TEMP% и %TMP% - временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему
%TIME% - Возвращает текущее время. Использует тот же формат, что и команда time /t, создается командой Cmd.exe
%USERDOMAIN% - имя домена, содержащего список учетных записей пользователей
%USERNAME% - имя пользователя, выполнившего вход в систему
%USERPROFILE% - размещение профиля для текущего пользователя
%WINDIR% - размещение каталога операционной системы