Команды для файла bat: Работа с bat-файлами. — База полезных знаний

Использование параметров в командном файле

При вызове командного файла можно вводить данные после команды, на которую командный файл указывает с помощью переменных %1, %2 и т.д. Например, в командном файле HELLO.BAT следующая команда:

@echo hello %1 boy

выведет на экран такую строку:

hello businka boy

если параметр %1 имеет следующее значение:

hello businka

Далее перечислены методы модификации указываемых в командном файле параметров.

Версии параметров командного файла

Параметр

Описание

%1

Стандартный параметр

%~f1

Преобразование параметра %1 в полностью определенное имя пути к файлу. Если передать только имя файла из текущего каталога, то этот параметр будет дополнен до диска и каталога

%~d1

Получение буквы диска из параметра %1

%~p1

Получение пути из параметра %1

%~n1

Получение из параметра %1 имя файла без расширения

%~x1

Получение из параметра %1 расширения файла

%~s1

Изменение характеристик параметров x и n для работы с коротким именем. Таким образом, параметр %~sn1 можно использовать для получения короткого имени файла, а параметр %~sx1 — для получения короткого расширения

Далее демонстрируются методы совместного использования некоторых параметров.

Комбинирование параметров командного файла

Параметр

Описание

%~dp1

Преобразование параметра %1 в букву диска и путь к файлу

%~sp1

Используется для получения короткого пути

%~nx1

Преобразование параметра %1 в имя файла и расширение

Для просмотра всех описанных выше параметров добавьте их в файл TEST.BAT, что может выглядеть следующим образом:

@echo off
echo fully qualified name %~f1
echo drive %~d1
echo filename %~n1
echo file extension %~x1
echo short filename %~sn1
echo short file extension %~sx1
echo drive and directory %~dp1
echo filename and extension %~nx1

Затем откройте файл с длинным именем. Например, выходные данные командного файла, запущенного с файлом c:\temp\пипецкакоедлинноеимяфайла.long, выглядит таким образом:

fully qualified name c:\temp\ пипецкакоедлинноеимяфайла.long
drive C:
path \TEMP\
filename пипецкакоедлинноеимяфайла
file extension .logn
short filename LONGFI~1
short file extension .LON
drive and directory c:\TEMP
filename and extension пипецкакоедлинноеимяфайла.long

Этот метод подходит для второго и последующих параметров. Достаточно вместо значения 1 ввести номер параметра (например, %~f2 для получения полностью определенного имени).

Параметр %0 содержит информацию о самом командном файле (например, %~dp0 предоставляет информацию о диске и пути к командному файлу).

Автоматизация рутинных операций | Мир ПК

При переходе от DOS к Windows пользовательский интерфейс упрощается, причем зачастую отпадает необходимость не только в командной строке, но и в командных (пакетных) файлах. Хотя это и оправдано заложенным в Windows потенциалом, но все же существенно обедняет возможности по управлению ПК.

В Windows ярлык к программе MS-DOS представляет собой Pif-файл, являющийся также программой конфигурации системы. Неопытный пользователь нередко боится прибегать к командным строкам, поскольку сомневается в правильности вводимых команд и опасается что-либо испортить. Кроме того, неверные команды неудобно редактировать — приходится заново их набирать, если, конечно, нет утилиты Doskey. В общем-то несложные команды легко научиться быстро вводить напрямую, но когда необходимо выполнить их целую серию, в частности архивировать, переименовывать, перемещать или копировать группы файлов, а также если такие операции требуются часто, то имеет смысл обратиться к Bat-файлу. Лучше задавать простое имя файла, чтобы при его вводе не возникало ошибок. Система Windows позволяет сделать операции с файлами более наглядными, а безликим в DOS Ваt-файлам дать выразительные ярлыки.

Если в сети, например, более 50 компьютеров и все пользователи, как правило, хорошо знают свои программы и стандартные операции в NC и Windows, то, чтобы изменить свойства ярлыка к одной из общедоступных программ и добавить две вложенные одна в другую папки на каждый из ПК можно сделать следующее. В общедоступную папку поместить ярлык «Ярлык.lnc» с необходимыми свойствами, командный файл «Команда.bat» и ярлык «Команда.pif» к нему со значком, например, в виде самолета (Windows SystemPifmgr.dll). В Bat-файл были включены строки:

DEL C:WINDOWSРАБОЧИ~1ЯРЛЫК.LNC
COPY F:ЯРЛЫК.LNC
 C:WINDOWSРАБОЧИ~1ЯРЛЫК.LNC
MD C:DIR1
CD DIR1
MD DIR2

В свойства ярлыка для этого файла также необходимо включить функцию «Закрывать окно по завершении сеанса работы». Теперь процедура замены ярлыка и создания двух вложенных папок на каждой из 50 машин заключается лишь в том, чтобы щелкнуть мышью на значке с изображением самолета в окне общедоступной сетевой папки.

Бывает, подобные задачи нужно решить и для локального ПК. Допустим, до работы над документом следует разархивировать имеющиеся на дискете файлы, а по окончании снова заархивировать. Кроме того, надо определенным образом систематизировать файлы, размещая их по разным папкам. В данном случае набор команд зависит от применяемых архиваторов.

Многие программы допускают управление через командную строку. Причем это оказывается более гибким, чем обычный щелчок мышью на ее значке. В подобном случае и помогут командные файлы и ярлыки. В свойствах ярлыков Windows (Lnc-файлов) тоже есть место для командной строки, указывающей на пакетный файл, запускаемый вместе с соответствующим ярлыком.

Проводник Windows (explorer.exe) можно запускать с параметрами, указанными в свойствах его ярлыка или в командном файле:

/n — открыть проводник в одинарном окне с содержимым текущей папки;

/e — открыть проводник с содержимым текущего диска и развернутой текущей папкой;

/root, — указать папку, содержимое которой требуется посмотреть.

Команда c:windowsexplorer. exe /e, /select, c:dir1file.doc откроет проводник с развернутым каталогом DIR1, а c:windowsexplorer.exe /n, /root, c:dir1file.doc вызовет текстовый редактор (в данном случае — Word) и откроет документ, а если Word не установлен, то появится сообщение об ошибке.

Команды будут выполняться одинаково как из командной строки (сеанс DOS), так и из соответствующего ярлыка. Однако чтобы не возникало проблем из-за неверной кодировки, имена каталогов и файлов следует вводить латиницей. Так, предыдущая команда не реализуется, если в пути будут присутствовать названия папок на русском языке в кодировке Windows.

Бывает, требуется запустить в Windows программу, которая может работать только в среде DOS. В таком случае опять же помогут командные файлы. Например, играть в GTA можно как в Windows, так и в DOS, но когда система перегружена выполняемыми в конкретный момент времени программами, GTA «не пойдет» и придется использовать режим эмуляции DOS. Чтобы ускорить этот процесс, нужно выполнить определенные операции. Сначала следует создать и поместить на Рабочий стол ярлык к сеансу DOS. Потом, открыв свойства ярлыка, добавить имя пакетного файла, который будет управлять запуском программы, и создать этот файл, например, под именем Igra.bat.

C:
cd gta
gta. bat

Затем, находясь во вкладке «Программа», необходимо нажать кнопку «Дополнительно», включить опции «Не давать программе обнаружить Windows», «Режим MS-DOS», «Выбрать новую конфигурацию MS-DOS» и заполнить поля для файлов Config.sys и Autoexec.bat, например, таким образом:

Config.sys
DOS=HIGH, UMB
Device=C:WINDOWSHimem.Sys
DeviceHigh=C:WINDOWSEMM386.Exe
devicehigh=c:windowscommandEbd
ramdrive.sys /E 1048
devicehigh=C:doscdoakcdrom.sys
 /D:mscd001 
device=C:doscdtdosm.sys
device=C:doscdflashpt.sys
device=C:doscdtcdrom.sys
 /D:mscd001
device=C:doscdaspi2dos.sys
device=C:doscdaspi8dos.sys
device=C:doscdaspi4dos.sys
device=C:doscdaspi8u2.sys
device=C:doscdaspicd.sys
 /D:mscd001
device=C:WINDOWSCOMMAND
display.sys
con=(ega,,1)
Autoexec.bat
SET TMP=C:WINDOWSTEMP
SET TEMP=C:WINDOWSTEMP
SET PROMPT=$p$g
SET winbootdir=C:WINDOWS
PATH=C:WINDOWS;C:WINDOWS
COMMAND;C:DOSCD;
C:WINDOWSCOMMANDEbd
SET=C:=C:
mode con codepage prepare=((866)
 C:WINDOWSCOMMANDega3.cpi)
mode con codepage select=866
keyb ru,,C:WINDOWSCOMMAND
keybrd3. sys
LH C:WINDOWSCOMMAND
MSCDEX.EXE /D:mscd001
/L:H
LH C:WINDOWSSmartDrv
LH c:dosmousemouse

В каталоге C:DOSCD находится драйвер для дисковода CD-ROM, полученный с загрузочной дискеты, а в C:DOSMouse — DOS-драйвер мыши.

Теперь, закрыв дополнительные настройки программы, можно сменить для нее значок, выбрав его с помощью кнопки «Обзор» из уже имеющихся в системе. Итак, для запуска программы достаточно щелкнуть на ярлыке. По окончании работы нужно в командной строке набрать Exit и нажать , чтобы снова оказаться в Windows.

В отдельных случаях с помощью командного файла можно перезагрузить систему. Так, для DOS-режима есть утилита Restart, исполняемый файл которой (restart.com) имеется в каталоге c:windowscommandebdebd.cab. Для Windows можно использовать программы, написанные на языках VB, Cи++ и др., а можно применить команду RUNDLL32.EXE shell32.dll, SHExit WindowsEx 2. Если такой файл снабдить красочным ярлыком, помещенным на Рабочий стол, то можно перезагружать ПК, не входя в меню «Пуск».

Команда RUNDLL32.EXE shell32.dll,SHExitWindowsEx 1 позволяет лишь завершить работу системы, а RUNDLL32.EXE shell32. dll,SHExitWindowsEx 8 — еще и выключить ПК (при наличии данной функции).

Следует учесть, что некоторые антивирусные программы «не дружат» с подобными Bat-файлами. Например, AVP при настройках «по умолчанию» и запущенном AVP-мониторе не разрешит даже скопировать такой файл. Однако определенные настройки помогут справиться и с этой проблемой.

Для параметров командных файлов в Windows можно вывести диалоговое окно. Так, создадим файл Mydel.bat для удаления указанного нами в дальнейшем файла.

IF exist %1 Del %1

В командной строке после имени командного файла указывается название удаляемого.

Создадим ярлык к Bat-файлу и в свойствах к нему на закладке «Программа» и в поле «Командная строка» добавим знак вопроса в конце строки через пробел. Включим функцию «Закрывать окно по завершении сеанса работы» и так изменим значок, чтобы он соответствовал характеру команды. В результате после двойного щелчка на ярлыке этого файла будет появляться окно «Параметры», куда необходимо ввести полное имя того файла, который мы собираемся удалить. Для завершения работы этой команды следует просто указать ОК. Здесь надо иметь в виду, что удаленный таким образом файл не будет помещен в Корзину и вернуть его, естественно, тоже будет нельзя.

В заключение создадим еще один командный файл Ar.bat, позволяющий выполнять сразу несколько функций:

  • проверка дискеты на наличие файлов и их удаления;
  • архивирование и отправка на дискету вместе с рисунками в формате .JPG только что написанной статьи, например Bat.doc, которая будет находиться в подкаталоге %1 каталога Maydoc1 (название подкаталога введем в окно параметров). Файлы с другими расширениями останутся в рабочем каталоге без изменений;
  • выключение компьютера.
Ar.bat
IF exist A:*.* Del A:*.* 

Открыв свойства Ваt-файла или его ярлыка, введем в конец командной строки через пробел знак вопроса. В корневом каталоге диска С: создадим служебный файл, который в дальнейшем может не раз пригодиться. Это будет текстовый файл с именем Y, причем без расширения, содержащий всего один символ Y. В первой строке Bat-файла символ Y дает утвердительный ответ на запрос команды Del об удалении файлов. Сам файл Ar.bat поместим в корневой каталог диска C: и, открыв свойства ярлыка, укажем C: в поле «Рабочая папка» закладки «Программа». Значок для ярлыка выберем из каталога WindowsSystemShell32.dll. Ярлык перетащим на Рабочий стол, вставим в дисковод дискету со старыми и ненужными файлами и, сохранив документ, закроем Word и щелкнем на ярлыке AR...

Александр Поляк-Брагинский, [email protected]

windows — просмотр содержимого файла .bat через командную строку

спросил

Изменено
1 год, 10 месяцев назад

Просмотрено
3к раз

Я хочу просканировать весь рабочий стол на наличие . bat, а затем просмотреть содержимое файла .bat и удалить файл, если он содержит ipconfig для проекта. Есть ли способ сделать это? Я хотел бы НЕ использовать сторонние инструменты

  • windows
  • командная строка
  • powershell
  • пакет
  • cmd.exe

10

Приведенный ниже сценарий Powershell получает содержимое файла myfile.bat , проверьте наличие строки ipconfig . Если да, файл удаляется.

 $file = 'c:\temp\myfile.bat`
$a = Get-Content $file | Выберите строку ipconfig
if($a.Length -gt 0){Удалить-Элемент $файл}
 

Чтобы добавить папку, например, на рабочий стол, измените сценарий, как показано ниже. Замените mthecodeexpert своим настоящим именем пользователя.

 $folder = 'c:\users\thecodeexpert\*.bat'
$files = Get-ChildItem $folder -файл
$ файлы | ForEach-Object{ $a = Select-String -Path $_.Fullname ipconfig; if ($a. Length -gt 0){Remove-Item $_.Fullname}}
 

5

В продолжение моего коммента…

 # Найти файлы по типу
(Get-ChildItem -Path "$env:USERPROFILE\Desktop" -Filter '*.bat' -Recurse).FullName
# Полученные результаты
<#
C:\Users\WDAGUtilityAccount\Desktop\SomeBatFile.bat
#>
# Проверяем запланированное действие над файлом, чтобы найти шаблон строки
(Get-ChildItem -Path "$env:USERPROFILE\Desktop" -Filter '*.bat' -Recurse).FullName |
ForEach-Object {
    Если (Select-String -Path $PSItem -Pattern 'ipconfig')
    {Remove-Item-Path $PSItem-WhatIf}
}
# Полученные результаты
<#
Что делать, если: Выполнение операции «Удалить файл» для цели «C:\Users\WDAGUtilityAccount\Desktop\SomeBatFile.bat».
#>
# Выполните действие с файлом, чтобы найти шаблон строки
(Get-ChildItem -Path "$env:USERPROFILE\Desktop" -Filter '*.bat' -Recurse).FullName |
ForEach-Object {
    Если (Select-String -Path $PSItem -Pattern 'ipconfig')
    {Remove-Item -Path $PSItem -Force -Verbose}
}
# Полученные результаты
<#
ПОДРОБНО: Выполнение операции «Удалить файл» для цели «C:\Users\WDAGUtilityAccount\Desktop\SomeBatFile. bat».
#>
# Подтвердить удаление
(Get-ChildItem -Path "$env:USERPROFILE\Desktop" -Filter '*.bat' -Recurse).FullName
# Полученные результаты
<#
Без результатов
#>
 

1

Для поиска всех файлов используйте цикл для :

 @echo off
cd /d "%userprofile%\рабочий стол"
для %%a в (*.bat) сделать (
  введите "%%a"|найдите /i "ipconfig" && echo del "%%a"
)
 

Есть и другой способ (выглядит несколько сложнее, но с точки зрения программиста более элегантен, так как не требует обработки файлов, не содержащих строку поиска). Это будет гораздо быстрее, если файлов много (а я означает а лот г.). Однако вы не заметите преимущества в скорости в папке на рабочем столе.

findstr /m возвращает не найденные строки, а имена файлов, в которых такие строки были найдены. Поместите для /f , чтобы захватить эти имена файлов и удалить их:

 @echo off
for /f "delims=" %%a in ('findstr /im "ipconfig" "%userprofile%\desktop\*. bat"') do del "%%a"
 

(Примечание: ваш рабочий стол может находиться в другом месте — проверьте это)

9

Вы можете использовать Select-String в PowerShell, который позволяет вам искать в каталоге ( для определенных типов файлов — расширения ), позволяя вам найти совпадение шаблона в файлах, отфильтрованных по:

 $ Paths = Select-String -Path "$env:USERPROFILE\Desktop\*" -Include '*.bat','*.cmd' -Pattern 'ipconfig' | Select-Object -ExpandProperty Путь
    если ($null -ne $Paths) {
        foreach ($Path в $Paths){
            "В пути к файлу найдено совпадение: $Path"
            Remove-Item -Path $Path -WhatIf
        }
    }
    еще {
        «Файл, содержащий шаблон, не найден»
    }
 
  • По умолчанию командлет Select-String находит первое совпадение в каждой строке и для каждого совпадения отображает имя файла, номер строки и весь текст в строке, содержащей совпадение.
  • Он также позволяет использовать сопоставление шаблонов Regex для более сложных задач.

Сохраняя вывод в переменной, мы можем явно выбрать полный путь, ссылаясь на свойство Path . Наконец, мы можем добавить несколько простых условий if для оценки нашей переменной и использовать цикл foreach мы можем перебирать вывод захвата.

  • Сохранение вывода в переменной необходимо ( по крайней мере в этом сценарии ), чтобы файл больше не использовался — Спасибо dave_thompson_085 за указание на мою ошибку.

Недостаток использования только этого командлета заключается в том, что он позволяет перечислить только один каталог . К счастью, PowerShell может объединять команды, и все, что вам нужно, это немного изменить код, используя Get-ChildItem с переключателем -Recurse для разрешения рекурсии каталога ( папка ).

 $Paths = Get-ChildItem -Path "$env:USERPROFILE\Desktop" -Include '*.cmd','*.bat' -Recurse |
    Select-String -Pattern 'ipconfig' | Select-Object -ExpandProperty Путь
    если ($null -ne $Paths) {
        foreach ($Path в $Paths){
            "В пути к файлу найдено совпадение: $Path"
            Remove-Item -Path $Path -WhatIf
        }
    }
    еще {
        «Файл, содержащий шаблон, не найден»
    }
 

В основном та же концепция, поэтому, когда вы будете готовы, удалите -WhatIf общий параметр , и это позволит удалить найденные файлы, содержащие этот шаблон.

3

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

пакетных команд MS-DOS

пакетных команд MS-DOS

Пакетные команды MS-DOS

Кнопка Opus или функция горячих клавиш могут быть установлены на MS-DOS Batch.
Режим функции
. Функция в этом режиме запускается так, как будто это
.bat пакетный файл, и он может использовать команды MS-DOS, ветвление и
логические инструкции, а также запускать внешние программы, предназначенные только для
запускаться из командной строки. Вы также можете включить обычный внутренний Opus
команды в пакетной функции (обратите внимание, что это может вызвать путаницу, когда
попытка использовать внешние команды, такие как Установить или
Скопируйте , которые конфликтуют с внутренними командами — используйте
@externalonly модификатор, описанный ниже, чтобы исправить это).

     

На приведенном выше снимке экрана показан пример простой пакетной функции MS-DOS. Этот
использует инструкцию MS-DOS dir для создания списка каталогов
текущей исходной папки. Использование перенаправления >
символ, список каталогов будет сохранен в файле по пути назначения
названный в честь текущей исходной папки.

 

Разрушение функции,

  • Тип установлен на Пакетная функция MS-DOS с помощью
    Функция раскрывающегося списка. Это необходимо для использования
    dir инструкция — dir не настоящая программа
    или команда, это инструкция, которая понимается только командой MS-DOS
    устный переводчик.
  • Первая строка команды cd {sourcepath} устанавливает
    текущий каталог пакетного сценария в текущую исходную папку. Это
    папка, которая dir создаст список.
  • Вторая команда вызывает инструкцию dir
    (флаг /w включает режим wide ).
    > символ перенаправляет вывод команды, а
    сочетание внешних
    коды управления, следующие за > , подают на выход
    имя файла.

    • {destpath} — путь текущего пункта назначения
      каталог
    • {sourcepath|nopath|noterm} — текущий источник
      каталог, без пути или конечного завершения (т. е. имя
      каталог)
    • .txt — расширение выходного файла.

 

Когда вы запускаете пакетную функцию MS-DOS, Opus фактически создает временную
пакетный файл на диске и записывает в него ваши инструкции перед его вызовом. Если
вы должны были посмотреть на пакетный файл, созданный вышеуказанной функцией, вы бы увидели
что-то вроде следующего:

 

 @echo off 
chcp 1252 > nul
C:
cd "\Users\Jon\Documents"
dir /w > "C:\Test\Documents.txt"

Эти инструкции автоматически записываются в . bat
файл на основе параметров и определения функции.

  • @echo off — стандартная инструкция MS-DOS, предотвращающая
    каждая команда не будет отображаться в окне подсказки при запуске пакетного файла
  • chcp 1252 > nul инициализирует кодовую страницу
    командная строка (1252 — стандартная кодовая страница Windows).
  • C: устанавливает текущий диск командной строки — это
    генерируется автоматически из инструкции cd {sourcepath}
    в определении команды.
  • cd «\Users\Jon\Documents» устанавливает текущий каталог на
    текущий диск — опять же, он генерируется автоматически из компакт-диск
    {sourcepath}
    инструкция.
  • dir /w > «C:\Test\Documents.txt» отвечает за
    создание фактического списка каталогов. В этом случае исходная папка
    назывался Documents , а папка назначения была C:\Test
    — поэтому имя выходного файла, сгенерированного
    {destpath}{sourcepath|nopath|noterm}.