Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Создать bat файл при помощи другого bat файла

Добрый вечер всем форумчанам!

Прошу помощи...
Решил заморочиться и создать bat файл при помощи другого bat файла
Все шло нормально пока не пришел момент отправить в bat файл такую команду

Код Windows Batch file
1
echo  55555 >> ZIP.log >> test.txt 
Пробовал использовать кавычки ' и "
В конечный файл (test.txt) приходит только такое или подобное: '55555
А мне нужно чтоб в test.txt оказалось именно 55555 >> ZIP.log и без каких либо кавычек
То есть чтоб текст перенесся ввиде команды

Заранее благодарен и жду помощи
Ответ: Спасибо за советы, все у меня пока получается
Может кому то поможет, выкладываю участок своего кода, где экранирую переменные и символы >>
Ниже строка для переноса из одного bat-файла в другой bat-файл
Код Bash
1
echo %%CD%%\AdditionalSoft\7za920\7za.exe t "%%FullPathDestinationFolderArchive%%\%%DestinationFolderArchive%%.zip" ^>^> "%%FullPathDestinationFolderArchive%%\%%DestinationFolderArchive%%_CHECK_ZIP.log" >> %NameScript%.bat
А вот что теперь отображается в другом bat-файле в результате переноса, корректность работы на 100%, тестирование провел
Код Bash
1
%CD%\AdditionalSoft\7za920\7za.exe t "%FullPathDestinationFolderArchive%\%DestinationFolderArchive%.zip" >> "%FullPathDestinationFolderArchive%\%DestinationFolderArchive%_CHECK_ZIP.log"
Подсказка чтобы кому такое потребуется...
переменные экранируются вот так:
после переноса нужно получить такое
Код Bash
1
%var%
чтоб перенести экранируем вот так
Код Bash
1
%%var%%
Другие спец символы, типа
Код Bash
1
>>
экранируем вот так
Код Bash
1
^>^>
Вопрос: Если ОС — Windows XP, то выполнить один BAT-файл, а если ОС — Windows 7, — другой BAT-файл

Доброго времени.
Кто будет добр и подскажет решение. Надо чтобы bat определял версию ОС (XP или 7) Если XP то выполняет соответствующий bat из этой же директории (XP.bat), соответственно если 7, то 7.bat

З.Ы. Всех с наступающими
Ответ:
Сообщение от sov44
Ver | Find "6." >Nul && (Echo 7 и выше)
Так было справедливо раньше, пока не вышла релизная версия Windows 10, у которой Major = 10.

10.0*​
Windows 10 (builds 9885-9888-9926 +), Insider Preview
6.4*​
Windows 10 (builds 9841-9860-9879)
Сообщение от kreativ4eg
тут только xp и 7
Сообщение от kreativ4eg
Если XP то выполняет соответствующий bat из этой же директории (XP.bat), соответственно если 7, то 7.bat
Windows Batch file
1
Ver | Find "5." >NUL & if errorlevel 1 (call "%~dp07.bat") else (call "%~dp0XP.bat")
Вопрос: Можно ли получить имя bat-файла в этом же bat-файле?

Запускаю прогу со входными аргументами из батника. Последний аргумент - имя выходного файла. Хочу чтобы это имя было таким же, как и у запускающего батника. Можно ли провернуть такое?
Ответ:
Windows Batch file
1
2
3
4
@echo off
echo path+name.ext="%~0" 
echo name.ext="%~nx0"
pause
Вопрос: Вставить N последних строк одного TXT-файла в конец другого TXT-файла

Здравствуйте, подскажите пожалуйста, как можно скопировать n последних строк одного тхт файла и вставить их в конец другого тхт файла?
Ответ: спасибо
Вопрос: Один bat-файл запускает по очереди два других bat-файла

Имеются две папки в одной драйвера в второй программы решил сделать установку этого хозяйства с командной строки в автоматическом режиме. Запускаю Setup_0.bat он по очереди запускает Setup_1.bat а потом Setup_2.bat. Вроде все работает но прошу вас проверить, может надо что то исправить или дополнить.

Setup_0.bat это первый bat файл
Windows Batch file
1
2
3
@echo
call Drivers\Setup_1.bat
call Programs\Setup_2.bat
Setup_1.bat это второй bat файл
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo
"Drivers\Chipset\INFUpdate\Setup.exe" /s
"Drivers\Chipset\1D5M\setup.exe" /s /sms
"Drivers\Audio\VIA audio driver\SETUP.EXE" /s /sms /v"/qn REBOOT=ReallySuppress"
"Drivers\LAN\Atheros\setup.exe" /s /sms
REM ------------------------------------------------
REM "Drivers\VGA Ivy Bridge\64\Setup.exe" /s
"Drivers\VGA Ivy Bridge\32\Setup.exe" /s
REM ------------------------------------------------
"Drivers\USB 3.0\IntelUSB30\Setup.exe" /s
"Drivers\CanoScan\CanoScan_Toolbox_4.1\TB4135_EN\Disk1\Setup.exe" /s /sms
"Drivers\CanoScan\o1417en_w_scan7031\SetupSG\SETUPSG.EXE" /auto
Setup_2.bat это третий bat файл
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo
"Programs\Unlocker\Unlocker1.9.2.exe" /S
"Programs\HashTab\HashTab_v6.0.0.28_Setup.exe" /S
"Programs\K-Lite_Codec_Pack\K-Lite_Codec_Pack_1285_Mega.exe" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
"Programs\Google_Chrome\GoogleChromeStandaloneEnterprise.msi" /quiet /norestart 
"Programs\CCleaner\ccsetup526.exe" /S
"Programs\NET_Framework\NDP462-KB3151800-x86-x64-AllOS-ENU.exe" /q /norestart
"Programs\paint_net\paint.net.4.0.13.install.exe" /auto
REM ------------------------------------------------
"Programs\SumatraPDF\SumatraPDF-3.1.2-install.exe" /s /register
REM "Programs\SumatraPDF\SumatraPDF-3.1.2-64-install.exe" /s /register
REM ------------------------------------------------
"Programs\WinRAR\wrarar-x32-540ru.exe" /S
REM "Programs\WinRAR\wrarar-x64-540ru.exe" /S
REM ------------------------------------------------
"Programs\ABBYY\FineReader\ABBYY.FineReader.v12.0.101.264.exe" /S /Q
"Programs\ABBYY\Lingvo_Professional_Full\ABBYY.Lingvo.X6.v16.1.3.70.exe" /S /Q
"Programs\Dr.Web_Security_Space\drweb-11.0-ss-win.exe" /silent yes /installFirewall no /reboot yes
Ответ: Причем тут автосервис? Может не так выразился, я попросил проверить правильно ли написан бат-файл.
Вопрос: Запуск нескольких циклов в одном bat-файле

Есть два цикла, которые должны работать совместно, но не пойму как их запустить одновременно из одного файла.
Как только запускается первый цикл, он начинает работать и на второй не переходит, до него просто не доходит дело.
То есть мне надо чтобы сначала запустился процесс 1, потом процесс 2 и потом они оба выполнялись согласно заданным параметрам. Не могу понять сам принцип.


Windows Batch file
1
2
3
4
5
6
7
8
9
:a
start example1.exe
taskkill example1.exe
goto :a
 
:b
start example2.exe
taskkill example2.exe
goto :b
Или вариант цикл внутри другого цикла, начинается запуск :а потом доходит до :b и циклится, не доходит до завершения цикла :а

Windows Batch file
1
2
3
4
5
6
7
8
9
10
:a
start example1.exe
 
:b
start example2.exe
taskkill example2.exe
goto :b
 
taskkill example1.exe
goto :a
Есть ли возможность параметру goto присвоить количество срабатывания повторов, например чтобы процесс :b совершался определенное количество раз и потом продолжал бы программу, давая возможность закончить процесс :a
Ответ:
Сообщение от Fantazerkin
Есть два цикла, которые должны работать совместно, но не пойму как их запустить одновременно из одного файла.
Так пойдет ?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@echo off
SetLocal EnableExtensions 
 
if "%~1" neq "" (call %* & exit /b)
 
call :WRAP :PROG1
call :WRAP :PROG2
exit /b
 
:WRAP
start "" cmd /c "%~f0 %*"
exit /b
 
:PROG1
 
title Cycle 1
:a
start "" example1.exe
taskkill /f /im example1.exe
goto :a
 
exit /b
 
:PROG2
 
title Cycle 2
:b
start "" example2.exe
taskkill /f /im example2.exe
goto :b
 
exit /b
Вопрос: Не запускаются BAT-файлы в Windows 10

Здравствуйте, не могу понять или у меня одного не запускается BAT-файл на Windows 10? Не могу не один батник запустить. На Windows 8.1 все отлично работает, на Windows 10 не работает не один батник. В чем проблема может быть? Или может что-то, я пропустил ранее обсуждалось тема


За ранее Спасибо за ваши советы!
Ответ: XxX_K_A_M_O_XxX,
Вам же сказали выше, сделайте скрин запущенного батника с содержимым, например:
Windows Batch file
1
2
3
@echo on
echo Privet
pause
.
Вопрос: Закачивание файла с сервера через bat-файл

Здравствуйте!
Недавно начал изучать CMD, написал бат-файлик но работает через раз.

Есть батник который должен выкачивать файлик с портала SharePoint командой.
Windows Batch file
1
@if exist C:\AK\%fil% ( ERASE  C:\AK\%fil% /Q & robocopy %wau% C:\AK %fil% /Z /R:3 /W:10)  else ( robocopy %wau% C:\AK %fil% /Z /R:3 /W:10 & )
(Строка проверяет существует ли файл, удаляет его при наличии и скачивает актуальную версию с портала)

где
Windows Batch file
1
set wau=\\portal\ХХХ\ХХХ\Shared%%20Documents\AK
путь к файлу

Есть портал на базе SharePoint. В обычном состоянии его не видно и пользователи обращаются к нему через браузер, как к сайту, но если ввести его адрес в проводник он появляется в сетевом окружении.

Пока портал не появится в сетевом окружении файлик ругается и говорит что такого пути нет, после его появления все работает прекрасно.

Подскажите как можно это вылечить!
Ответ: Большое спасибо, alpap!
Powershell дело хорошее, но я его пока не знаю, а на освоение пока не хватает времени.
Тем более что "robocopy" меня устраивает, проблема в том что нужно сначала "увидеть" сетевой ресурс а уже потом применить его.

В связи с чем решил превратить баг в фичу)))
В той же папке разместил маленький рисунок (когда будет время он станет большим приветственным логотипом).
Windows Batch file
1
start "" "\\portal\XXX\XXX\Shared Documents\AK\dbicon.ico" 
открывает картинку заставляя компьютер попутно увидеть сетевой ресурс
Windows Batch file
1
@if exist C:\AK\%fil% ( ERASE  C:\AK\%fil% /Q & robocopy %wau% C:\AK %fil% /Z /R:3 /W:10)  else ( robocopy %wau% C:\AK %fil% /Z /R:3 /W:10 & ) 
(тут ничего не поменялось) Качает оболочку базы (замечу что сетевой ресурс притормаживает и работать напрямую без скачивания невозможно)
Windows Batch file
1
TASKKILL /F /FI "WINDOWTITLE eq dbicon*"
закрывает логотип (рисунок).

Дальше оболочка прекрасно открывается и управление передаётся пользователю.
Пусть не элегантно но работает без сбоев.
Профит.

Считаю что тему на этом можно закрывать.
Всем спасибо!
Вопрос: Bat-файл для мониторинга работы exe-файла

Доброго времени суток!!! Помогите пожалуйста с написанием батника. Нужно: 1. запустить exe файл(это имеется:
Windows Batch file
1
2
3
4
5
@echo off
echo Netbeans
start "netbeans" "FirefoxLikesrock.exe"
 
exit
)
2. И т.к Firefox прекращает свою работу(при определённом кол-ве занятой оперативной памяти), то нужно снова запустить этот же экземпляр Firefox

Я предполагаю что нужно при запуске exe файла(FirefoxLikesrock.exe) запоминать id запустившегося процесса(если это возможно конечно) и в дальнейшем мониторить работу этого процесса по id, как токлько процесса нет в работе, запускать exe по новой.

Я в кодинге не силён (только учусь на примерах), помогите пожалуйста решить такую задачу.

Заранее благодарен!

Добавлено через 1 час 32 минуты
Короче, надо чтоб батник запустил exe файл, запомнил id этого процесса, проверял работает ли процесс с данным id, если нет, то снова запускал exe файл, запоминал id запущенного процесса, проверял работает ли процесс с данным id......
Заранее благодарен!
Ответ:
Сообщение от stars1981
проверял работает ли процесс с данным id, если нет, то снова запускал exe
т.е. батник тоже должен висеть в процессах и помогать ухудшать ситуацию:
Сообщение от stars1981
(при определённом кол-ве занятой оперативной памяти)
Windows Batch file
1
2
3
4
@echo off
set "pr=FirefoxLikesrock.exe"
tasklist /fi "imagename eq %pr%"|find/i "%pr%" || start "" "%pr%"& >nul timeout /t 1 /nobreak
exit
.
Вопрос: BAT-файл для работы с группой файлов

Добрый день,
Помогите пожалуйста создать бантичек для такой задачи.
Есть много папок. Каждая имеет уникальное название. И есть группа файлов, которые имеют такие же названия как и папка.
Задача - скопировать файл в "свою" папку.


Заранее спасибо!
Ответ:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
pushd "%~dp0"
:: директория, где находится папка с каталогами для перемещения
:: в примере это каталог rootdir в рабочей директории батника
set "root=%cd%\rootdir"
:: каталог для поиска файлов можно задать в команде dir
:: либо, если это каталог батника - оставить как есть, с маской файлов или без нее
for /f "delims=" %%a in ('dir /a-d/b *.txt') do (
    if exist %root%\%%~na (
        echo move "%%a" "%root%\%%~na"
    ) else (
        echo Переместить %%a в %root%\%%~na невозможно
        )
)
:: для реального перемещения убрать echo перед move
pause
Добавлено через 15 минут
UPD.
Если файлы находятся не своих папках внутри корневого каталога, то ключ /s у команды dir позволит их найти и переместить куда нужно.
Например, указав в команде dir 'dir /a-d/b/s rootdir\*.txt' к качестве цели каталог, где находятся сами файлы не своих папках - мы получим смену их расположения на требуемую.
Хотя, есть вероятность что в такой ситуации (на тестовом пример все, впрочем, сработало как надо) рекурсивный обход может все-таки подложить свинью :-)