Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
часть 1 | часть 2 | часть 3 | часть 4 | часть 5 | часть 6
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!! Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте батник без пробелов.
 
Примечание: Большие куски кода заключайте в тэг [ more ].  

Смежные темы:
В помощь системному администратору > Автоматизация администрирования
Microsoft Windows > Сценарии Windows

Полезные ссылки:
· Из Windows XP Professional Product Documentation:
> Описание Cmd.exe > Command shell overview
> Using batch files > Using batch parameters > Using filters > Using command redirection operators
 
· Уроки bat-аники (для начинающих): первый и второй
· Курс из 19 лекций "Командная строка и сценарии Windows"
· Уильям Р. Станек - Командная строка Windows. Справочник администратора
 
· Выполнение BAT-скриптов без вызова окна консоли
· cmdow - изменение параметров и видимости дос-окна, Статья в КОМПЬЮТЕРРАONLINE
· Набор GNU утилит для win32
· HS_Packet.7z - Пакет утилит для организации интерфейса в bat-файлах
· blat - отправка почты из консоли
· Easy Batch Builder+Rus+Crack - Редактор BAT файлов.Через графический интерфейс программы вы сможете быстро конструировать пакетные файлы практически любой сложности. (В комплекте есть Лоадер созданный с помощью Sign Of Misery некоторые антивирусы обзывают его вирусом. Вам решать: ставить или не ставить) (ЗЕРКАЛО)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек) ещё и ещё
· Переход из 32-битной версии cmd.exe в 64-битную (1) (2)(3)
 
· Архив всевозможных версий cmd.exe (от Windows NT 3.10 до Windows 11 +Win95cmd +ReactOS) и command.com (DOS 5.0 и выше). Старые командные процессоры можно запускать на более новых ОС, хотя не всё может работать корректно. Подробная документация по командам cmd.exe и стандартным утилитам ОС для NT 3.51, NT 5.0 (Windows 2000) и NT 5.2 (Windows Server 2003). Сборник представляет исторический интерес, а также незаменим для тех, у кого появилось желание сделать свои скрипты работоспобными не только на своей версии ОС.
 
· Большой сборник одним архивом: Сотни Win32 утилит командной строки, нетривиальные .cmd файлы, .bat miniperl скрипты (не требующие полноценной установки Perl), FAR Manager с плагинами и настройками, разное для DOS/DOSBox (откуда под Win32 интерес представляют три продвинутых "мультисистемных" .bat файла да ещё, может быть, оболочка Necromancer DOS Navigator с поддержкой LFN и доступом к буферу обмена Windows). Краткие описания всего - в файликах files.bbs

Всего записей: 39023 | Зарегистр. 26-02-2002 | Отправлено: 22:41 20-06-2024
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shok

Цитата:
set "current_dir=%cd%"

Лишнее.
 

Цитата:
REM Извлекаем только имя текущего каталога

А если он корневой? А если имя содержит "!" и включено delayed expansion?
 
Artem_Butenko

Цитата:
Просто имя каталога, без слэшей.

Что должно возвращаться, если каталог корневой?

----------
Magically yours
Raistlin

Всего записей: 4091 | Зарегистр. 18-04-2005 | Отправлено: 10:29 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
в этом случае:
 
@echo off
REM Сохраняем текущее состояние delayed expansion
setlocal DisableDelayedExpansion
 
REM Получаем текущий рабочий каталог, из которого запущен скрипт
set "current_dir=%cd%"
 
REM Проверяем, является ли каталог корневым
if "%current_dir:~-1%"=="\" (
    set "dir_name=\"
) else (
    REM Извлекаем только имя текущего каталога
    for %%I in ("%current_dir%") do (
        set "dir_name=%%~nxI"
    )
)
 
REM Включаем delayed expansion для вывода переменной
setlocal EnableDelayedExpansion
echo !dir_name!
endlocal

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 10:32 14-09-2024
GCRaistlin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shok

Цитата:
set "dir_name=\"

По условиям задачи, имя должно быть без слешей.
 

Цитата:
set "current_dir=%cd%"

Это по-прежнему лишнее. С тем же успехом можно далее работать напрямую с %cd%.

----------
Magically yours
Raistlin

Всего записей: 4091 | Зарегистр. 18-04-2005 | Отправлено: 10:43 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GCRaistlin
В любом случае всё можно поправить по-месту, под конкретную задачу и под конкретные условия.

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 11:08 14-09-2024
MaraGame24

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые знатоки...
Нужен BAT, подключающий  диск.VHD СТРОГО на букву W, работающий на системах Windows 7-11.
В BAT\CMD я несоображаю, если возможно готовый вариант.

Всего записей: 422 | Зарегистр. 25-11-2023 | Отправлено: 12:06 14-09-2024 | Исправлено: MaraGame24, 23:20 14-09-2024
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
www_world
Проверил Ваш вариант пакетного сценария. Выводит имя текущего каталога из которого запущен пакетный сценарий. Например, "Test"
 
GCRaistlin

Цитата:
if _==_!! (
  echo Current directory is !cd!
) else (
  for /f delims^= %%A in ("%cd%") do echo Current directory is %%A
)

К сожалению выводит полный путь к текущему каталогу. Например, "Current directory is e:\Test".
 

Цитата:
А если он корневой? А если имя содержит "!" и включено delayed expansion?

В имени каталога могут быть только точки, без символов "!". Каталог не корневой.
 
shok

Цитата:
@echo off
REM Получаем текущий рабочий каталог, из которого запущен скрипт
set "current_dir=%cd%"
 
REM Извлекаем только имя текущего каталога
for %%I in ("%current_dir%") do set "dir_name=%%~nxI"
 
REM Выводим имя текущего каталога
echo %dir_name%
pause  

Выводит имя текущего каталога из которого запущен пакетный сценарий. Например, "Test"
 
Pasha_ZZZ

Цитата:
@echo off
call :GetCmdDir "%~dp0."
echo %CmdDir%
................ ваш код ..............
goto :eof
 
:GetCmdDir
set "CmdDir=%~nx1"
goto :eof  

Выводит имя текущего каталога из которого запущен пакетный сценарий. Например, "Test"
 
Большое Вам человеческое спасибо ребята за помощь!
 
 
Добавлено:
MaraGame24
 

Цитата:
Нужен BAT, подключающий  диск.VHD СТРОГО на букву W, работающий на системах Windows 7-11.
В BAT\CMD я несоображаю, если возможно готовый вариант.

 
Собственно сам пакетный сценарий.
Задача для "Планировщика заданий".
 
Или такой вариант пакетного сценария и задачи для "Планировщика задач". В одном каталоге с пакетным сценарием создайте текстовый файл "AutoMount_«My_Disk.vhdx».txt" следующего содержания
 
Букву диска думаю поменяете сами с "K" на "W".
Думаю с подобными вопросами удобнее обратиться в следующую тему.

Всего записей: 720 | Зарегистр. 19-02-2008 | Отправлено: 14:06 14-09-2024 | Исправлено: Artem_Butenko, 14:44 14-09-2024
Death_INN

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaraGame24

Цитата:
Нужен BAT, подключающий  диск.VHD СТРОГО на букву W, работающий на системах Windows 7-11

vhd уже создан и отформатирован? Тогда какой путь, имя и метка тома? И это очень не простая задача
 
Artem_Butenko, если треба каждый раз создавать vhd при старте, то достаточно в планировщике прописать правильные аргументы для cmd без всяких батников, txt и прочей дребедени

Всего записей: 3428 | Зарегистр. 24-10-2002 | Отправлено: 17:31 14-09-2024 | Исправлено: Death_INN, 17:59 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaraGame24

Цитата:
Нужен BAT, подключающий  диск.VHD СТРОГО на букву W, работающий на системах Windows 7-11.

Это загрузочный VHD?

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 18:27 14-09-2024 | Исправлено: shok, 18:27 14-09-2024
MaraGame24

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death_INN
Цитата:
И это очень не простая задача
По этому сюда пишу, в тернете не нашлось ответа.
Планировщик вообще не нужен...
Цитата:
vhd уже создан и отформатирован?
Динамический MBR\NTFS.
Цитата:
Тогда какой путь, имя и метка тома?
Диск будет разворачиваться на разных компах и системах в %Temp% из SFX архива, а инициализироваться должен СТРОГО на букву W.
 
shok
Цитата:
Это загрузочный VHD?
Нет.

Всего записей: 422 | Зарегистр. 25-11-2023 | Отправлено: 18:39 14-09-2024 | Исправлено: MaraGame24, 18:49 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaraGame24
вот концепт:

Код:
REM Путь к VHD файлу
set "vhd_path=C:\path\to\your\disk.vhd"
 
REM Проверяем, существует ли файл VHD
if not exist "%vhd_path%" (
    echo Файл VHD не найден: %vhd_path%
    exit /b 1
)
 
REM Генерируем файл attach_vhd.txt
(
    echo select vdisk file="%vhd_path%"
    echo attach vdisk
    echo assign letter=W
) > "%~dp0attach_vhd.txt"
 
REM Генерируем файл list_volumes.txt
(
    echo list volume
) > "%~dp0list_volumes.txt"
 
REM Подключаем VHD
echo Подключение VHD...
diskpart /s "%~dp0attach_vhd.txt"
 
REM Проверяем, подключен ли диск на букву W
for /f "tokens=2 delims= " %%i in ('diskpart /s "%~dp0list_volumes.txt" ^| find " W "') do (
    if "%%i"=="W" (
        echo Диск успешно подключен на букву W.
        exit /b 0
    )
)
 
echo Не удалось подключить диск на букву W.
exit /b 1

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 18:49 14-09-2024 | Исправлено: shok, 18:49 14-09-2024
MaraGame24

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shok
Надо без привязки к букве диска...Написали же в %Temp%. Все пути относительные (например так %SystemRoot%).  
Системные диски могут быть с любой буквой кроме W.
 
REM Путь к VHD файлу
set "vhd_path=C:\path\to\your\disk.vhd"  
 
Уже не подходит...есть привязка к диску С:\.....У меня системный диск например O:\.....
 
VHD будет упакован в SFX архив вместе с BAT файлом, который будет распаковывфться в папку %Temp%....В принципе системная буква диска не нужна.

Всего записей: 422 | Зарегистр. 25-11-2023 | Отправлено: 18:52 14-09-2024 | Исправлено: MaraGame24, 19:02 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
@echo off
setlocal
 
REM Определяем путь к временной папке
set "tempPath=%TEMP%"
 
REM Создаем виртуальный диск W
subst W: %tempPath%
 
REM Проверяем, что диск создан
if exist W:\ (
    echo Диск W успешно создан и указывает на %tempPath%
) else (
    echo Не удалось создать диск W
)
 
endlocal
pause

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 19:00 14-09-2024
MaraGame24

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shok

Цитата:
REM Создаем виртуальный диск W
Он уже создан и набит всяким хламом...Нужно его только инициализировать на букву W из %Temp%.
 
Ваш батник весь мой %Temp% продублировал, но на букву W (как надо).И он не отключается.

Всего записей: 422 | Зарегистр. 25-11-2023 | Отправлено: 19:03 14-09-2024 | Исправлено: MaraGame24, 19:21 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
@echo off
setlocal
 
REM Определяем путь к VHD образу
set "vhdPath=%TEMP%\RAR1\VHD_образ.vhd"
 
REM Создаем файл mount_vhd.txt
echo select vdisk file="%vhdPath%" > mount_vhd.txt
echo attach vdisk >> mount_vhd.txt
echo assign letter=W >> mount_vhd.txt
 
REM Монтируем VHD образ
echo Монтирование VHD образа...
diskpart /s mount_vhd.txt
 
REM Проверяем, что VHD образ смонтирован
if exist W:\ (
    echo Диск W успешно инициализирован и указывает на VHD образ
) else (
    echo Не удалось инициализировать диск W
)
 
REM Удаляем временный файл mount_vhd.txt
del mount_vhd.txt
 
endlocal
pause

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 19:18 14-09-2024
MaraGame24

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del.

Всего записей: 422 | Зарегистр. 25-11-2023 | Отправлено: 19:21 14-09-2024 | Исправлено: MaraGame24, 19:52 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaraGame24
Мне не надо ничего качать

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 19:23 14-09-2024
MaraGame24

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shok
Тогда не работает.
Диск VHD сам не инициализируется...если в ручную инициализировать комп в синьку уходит.

Всего записей: 422 | Зарегистр. 25-11-2023 | Отправлено: 19:24 14-09-2024 | Исправлено: MaraGame24, 19:28 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaraGame24
Тебе нужно только монтировать под буквой W VHD, который распакован из архива RAR например в папку TEMP.
Не работать может по многим причинам.
Диспартом поработай вручную с этим образом. Может сам образ некорректный.

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 19:31 14-09-2024 | Исправлено: shok, 19:36 14-09-2024
MaraGame24

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shok
Цитата:
распакован из архива RAR например в папку TEMP

ДААА...Только из SFX (7-zip) самораспаковывающийся архив в %Temp%.
Перезалили с последним вашим батником..... Скачать---->>>  
В архиве ваш последний батник с пустым VHD (200кв).
 
Вот что выдает при запуске батника....
 


Цитата:
Тебе нужно только монтировать под буквой W VHD
ДААА.
 

Всего записей: 422 | Зарегистр. 25-11-2023 | Отправлено: 19:36 14-09-2024 | Исправлено: MaraGame24, 19:49 14-09-2024
shok

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MaraGame24
так путь то свой укажи. Это же пример.
Код:
%TEMP%\RAR1\VHD_образ.vhd"

Всего записей: 11832 | Зарегистр. 30-04-2006 | Отправлено: 19:52 14-09-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии - bat, cmd


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru