Bat файл для запуску CMD із потрібною командою
Доброго дня! А підкажіть скрипт для bat файлу, щоб запустити консоль і виконати в ній потрібну команду, наприклад CD C:\c++, тобто start CMD це зрозуміло, а як передати на виконання команду CD C:\c++ ?
Bat-файл, який запускає інший bat-файл у потрібному кодуванні (дубль 2)
Здрастуйте! Суть питання в наступному.
Bat-файл, який запускає інший bat-файл у потрібному кодуванні
Здрастуйте! Суть питання в наступному.
bat файл для запуску програми
Здрастуйте! Підкажіть будь ласка! Мені потрібно зробити таку штуку: в bat-файлі запустити.
Для кожного exe-файлу створити bat-файл для його запуску
Не можу зрозуміти як створити exe файл створити бат файл для його запуску?
Запуск консольної програми у новій консолі (Windows BAT)
Потрібно запустити консольну програму в новій консолі, але не закривати консоль після завершення програми, а дочекатися введення з клавіатури. Як це можна зробити?
1 відповідь 1
Вибачте, якщо надто прямо зрозумів питання, але використання pause наприкінці не допоможе?
start test.bat pause
Додав ще варіант
echo off start test.bat set /p input=""
тоді буде очікування введення будь-яких символів та/або натискання введення.
І ще варіант
start /WAIT test.bat
І останній варіант, напевно, найвдаліший і потрібний вам
start /b test.bat && pause
У такому варіанті виконується test.bat в тому ж терміналі і постановка на паузу після виконання скрипта.
C:\Users\zombic>start /b cmd /K "ping localhost && exit" && pause Щоб продовжити, натисніть будь-яку клавішу . . . Обмін пакетами з game-desktop [::1] з 32 байтами даних: Відповідь від ::1: час
далі очікується натискання будь-якої клавіші.
Bat файли, приклади
Всі наведені нижче приклади ви можете виконати не тільки через створення та запуск BAT-файлу, що містить ці команди, але й скопіювавши їх безпосередньо в командний рядок .
Щоб відкрити командний рядок у потрібному місці (у папці з файлами, наприклад), потрібно викликати контекстне меню (ПКМ) із клавішею Shift :
Про те, як працювати з командним рядком, ви можете прочитати в цій статті. Переходимо безпосередньо до команд.
Список усіх команд консолі з описом можна отримати, набравши консолі help
Довідку за будь-якою командою можна отримати за допомогою ключа /?
Наприклад: DIR /? виведе довідку з усіх ключів команди DIR
Видалення тимчасових файлів перед вимкненням комп'ютера
Я думаю, що всі, як мінімум, чули про sms-віруси або стикалися з ними особисто. Bat-файл допоможе вам правильно завершити роботу комп'ютера, видаливши тимчасові файли, в папку з якими зазвичай завантажується вірус.
При наступному завантаженні пристрою (на ранній стадії) вірус робить запис у реєстрі, порушуючи нормальну роботу системи. І коли завантажується робочий стіл, ситуацію вже складніше виправити.
Зрозуміло, далеко не всі віруси працюють за цією схемою, але очищення тимчасових файлів і кешу системи перед її вимкненням значно знижує такі ризики.
start /wait "" "C:\Program Files\CCleaner\CCleaner64.exe" /auto start /wait "" "C:\WINDOWS\System32\shutdown.exe" /s /t 10
Програма CCleaner за замовчуванням відсутня у Windows.Її потрібно встановити окремо. Завантажити інсталятор можна на сайті розробника.
Першою запускається програма CCleaner та видаляє всі тимчасові файли на комп'ютері. Потім запускається програма вимкнення комп'ютера із затримкою в 15 секунд, щоб уникнути можливих конфліктів із роботою CCleaner.
Необхідно створити BAT-файл та скопіювати цей приклад у нього. Ярлик на bat-файл вивести на робочий стіл, призначити йому гарну іконку та вимикати комп'ютер за допомогою цього ярлика-кнопки.
Отримати список файлів у папці за допомогою Bat-файлу
Періодично користуюсь bat-файлами для отримання списків файлів у папках. Часта ситуація: по роботі клієнти надсилають від фотографа архів із фотографіями. Фотографії мають назви відповідно до артикул товарів.
Жодної текстової інформації, що супроводжує фотографії немає. Необхідно зробити список на основі надісланих фотографій та імпортувати його до каталогу товарів на сайті. Для кожного товару зроблено декілька фото. Вони іменовані так:
- Фото товару з артикулом А1234.jpg
- Фото товару з артикулом А1234 (2).jpg
- Фото товару з артикулом В1234.jpg
- Фото товару з артикулом В1234 (2).jpg
Спочатку я отримую список усіх файлів, що знаходяться в папці за допомогою наступної команди:
dir *.jpg /B /L > filelist.txt
Команда *.jpg дозволить враховувати лише JPG-файли при складанні списку. Ключ /B дозволить отримати список, що містить лише імена файлів, що знаходяться у папці. Ключ /L виведе усі імена в нижньому регістрі. Команда >filelist.txt створить текстовий файл з ім'ям filelist і запише результат туди.
Наступним кроком потрібно позбавитися дублів, щоб у списку залишилося тільки по одному запису для кожного товару:
type filelist.txt | findstr /I /V "(2)" > temp.txt
Команда findstr здійснюватиме пошук у раніше отриманому файлі. Ключ /I дозволяє шукати записи без урахування регістру, а ключ /V записує рядки, у яких відсутній збіг. У лапках вказаний рядок, збіг з якого потрібно фіксувати. І остання команда > temp.txt запише у файл temp усі результати, що не містять імені "(2)". В результаті я отримаю:
- Фото товару з артикулом А1234.jpg
- Фото товару з артикулом В1234.jpg
І далі на основі цього текстового списку готуватиму файл для імпорту.
Якщо вам потрібно провести зворотну операцію - вивести у файл temp.txt тільки збіги, то в списку команд (findstr /?) ви не знайдете потрібної. Є тільки зворотний фільтр точного збігу - /X .
Для цього завдання можна скористатися командою виведення номера рядків /N , у яких є збіги (номери виводяться разом із рядком):
type filelist.txt | findstr /I /N "(2)" > temp.txt
Головне під час роботи з текстовою інформацією (текстовими файлами) пам'ятати один момент:
Якщо для текстових операцій ви використовуєте як вихідний файл, який створили не через командний рядок, він повинен бути в кодуванні, яке розуміється командним рядком. Наприклад, CP1251 (ANSI).
Інакше ризикуєте отримати на виході щось таке:
Копіювати дерево каталогів без файлів
Коли я починаю робити нові проекти, виникає потреба отримати дерево каталогів, аналогічне старому проектному з тією різницею, що в ній не повинно бути файлів. Для нового проекту простіше додати 3-5 файлів у потрібні порожні папки, аніж копіювати існуючий проект і видаляти потім звідти непотрібне.
Отримати дерево каталогів без файлів можна за допомогою наступної команди:
xcopy folder_1 folder_2 /T /E
Команда xcopy бере за основу дерево каталогу за адресою folder_1 і створює копію в папці folder_2 . Ключ /T дозволяє копіювати каталоги, не копіюючи файли, що лежать у них. Ключ /E уточнює, що потрібно копіювати всі каталоги, в т.ч. порожні.
Оптимально для отримання дерева каталогів потрібно відкрити командний рядок у батьківській папці каталогу-донора і в цій же папці створити каталог, в який буде поміщене дерево, що копіюється. При цьому команді достатньо вказати імена папки-донора та папки призначення (як у прикладі вище).
Порахувати кількість файлів у каталозі
Якщо потрібно порахувати кількість файлів у конкретно взятому каталозі, можна скористатися наступним кодом:
@echo off for /f %%i
in ('dir /b /a-d') do
set /a num+=1
echo
in folder %num% files pause
У подібних прикладах часто вставляють рядок chcp 1251 > nul, але я волію виводити всі дані в кодуванні за замовчуванням. У створюваних bat-файлів зазвичай визначається як OEM(DOS). Тому у висновку я використовую латиницю і не морочуся. Для мене це актуально, коли є робота з текстом, як у прикладах вище. Команда pause потрібна для того, щоб встигнути ознайомитись з результатом виконання команди. Після цього можна натиснути будь-яку клавішу, і вікно консолі закриється.