If i help You, send me BTC please 1CJGz4UGyL7hTjPeN8j7fu9LRmmWiWSRHi

Шпаргалка по консольным командам Windows.

Постов 59 из 174

В работе на компьютере с windows (как с любой другой ОС) довольно часто возникают разные повторяющиеся задачи. Для того чтобы упростить и ускорить процесс выполнения таких задач следует использовать механизм автоматизации выполнения команд — а проще говоря написание скриптов.

В этом посте я для себя соберу некоторые команды и приемы, полезные при написании скриптов Windows.

1. Добавить сетевую шару:

net use Z: \\ip_адрес\имя_шары /user:Domain\UserName "password"

Удалить ее же:

net use Z: /delete

2. Создать каталог «new_folder» чтобы после имени шла текущая дата:

mkdir new_folder%date%

или

mkdir %date:~0,2%-%date:~3,2%-%date:~6,4%

— чтобы в выводе вместо точек были дефисы. Здесь запись %date:~0,2% — означает: взять переменную date, пропустить 0 символов ее значения и напечатать 2.

3. Извлечь в переменную %filename% полный путь и имя файла (любого *.zip, например) в каталоге:

for /f "tokens=*" %%a in ('dir *.zip /b /s') do set filename=%%a

заменив set filename=%%a на set filename=%%~dpa — получим только путь без имени файла,

заменив set filename=%%a на set filename=%%~na — получим только имя файла без расширения,

заменив set filename=%%a на set filename=%%~nxa — получим только имя файла с расширением.

4. Извлечь только имя файла, содержащегося в каталоге %work_dir% в переменную %filename%

cd %work_dir%
for /f %%a in ('dir /b *.*') do set filename=%%a

5. Найти в каталоге %work_dir% файл с именем %filename%, и если найдется, то записать в переменную %path% путь к нему

for /r %work_dir% %%a in (*) do if "%%~nxa"=="%filename%" set path=%%~dpa

Чтобы записать в переменную %path% полный путь+имя файла+расширение — заменить %%~dpa на ~dpnxa

6. Присвоить переменной %result% результат выполнения команды ‘command’:

for /f "delims=" %%A in ('command') do set "result=%%A"

Например, если будет найдена строка «next str» в файле D:\1.txt, то результат будет помещен в %result%:

for /f "delims=" %%A in ('findstr /L /C:"next str" D:\1.txt') do set "result=%%A"

7. Отправить e-mail из консоли с вложением (для простоты используем в качестве вложения переменную из предыдущего примера):

blat.exe -s "E-mail header" -t [email protected] -f [email protected] -server smtp.server.com.ua -body "BODY" -attach "%filename%"

8. Найти и вывести в консоль все файлы в каталоге С:\catalog\, созданные в определенный период, заданный переменными StartTime и Endtime (MM/DD/YYYY):

for /f "usebackq tokens=1-5 skip=5" %%A in (`dir С:\catalog\`) do ( if %%A GEQ %StartTime% if %%A LEQ %Endtime% echo %%E )

9. Найти и вывести в файл report.txt  все строки, найденные во всех файлах каталога С:\catalog\, и содержащие подстроку «string»:

::: Find all files
for /f %%a in ('dir /b С:\catalog\*.*') do (
::: Find string in file and print it to report file
for /f "delims=" %%g in ('findstr /I /L /C:string %%a') do echo %%g >> report.txt
)

10. Найти и вывести в файл report.txt  все строки, найденные во всех файлах каталога С:\catalog\, и содержащие подстроку, заданную регулярным выражением «^string[1-9][0-9][0-9]»:

::: Find all files
for /f %%a in ('dir /b С:\catalog\*.*') do (
::: Find string in file and print it to report file
for /f "delims=" %%g in ('findstr /R /C:"^string[1-9][0-9][0-9]" %%a') do echo %%g >> report.txt
)

11. Найти и скопировать в каталог %Dir%\temp все файлы из каталога C:\WINDOWS\ созданные не ранее %ReportStartDate% и не позднее %ReportEndDate (формат даты: DD/MM/YYYY)

for /f "usebackq tokens=1-5 skip=5" %%A in (`dir C:\WINDOWS\`) do

(
if %%A GEQ %ReportStartDate%

if %%A LEQ %ReportEndDate%

copy C:\WINDOWS\system32\LogFiles\W3SVC1\%%E %Dir%\temp
)

Пост обновляется и дополняется.

12.. Распаковать все архивы *.zip каталога %LogsDir% в этот же каталог:

for /R "%LogsDir%" %%I in ("*.zip") do (
"%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpI" "%%~fI"
)

, , ,

Menu