Файл переменные bat: Переменные среды в CMD, BAT-файле — iTeron
Переменные среды в CMD, BAT-файле — iTeron
Бывает так, что написанный Вами BAT-файл работает на одном компьютере, но не работает на другом. Ошибка часто заключается в том, что были использованы прямые пути к файлам. Например батник для копирования всех текстовых файлов находящихся в папке windows на диске C
xcopy C:\windows\*.txt
Такой батник будет работать на любом компьютере, только если операционная система установлена на диск С, если ОС расположена на другом диске D,F,K,J и т.д., необходимо использовать переменную %WINDIR%
Такой батник будет работать на любом компьютере — без разницы на какой диск установлена ОС
xcopy %WINDIR%\*.txt
Переменные среды — текстовые переменные операционной системы, хранящие данные о ряде настроек системы. Используются переменные среды при копировании, перемещении, переименовании, удалении, создании файлов и папок других действий в командной строке.
Список переменных среды ОС Windows Вы можете посмотреть введя в командной строке: set и нажав клавишу Enter Также можно вывести список переменных в текстовый файл с помощью батника
set > docent. txt
Bat-файл с таким кодом создаст текстовый файл docent.txt(здесь и далее имена подставляйте свои)и выведет список переменных среды ОС Windows в этот текстовый документ в том-же месте где и располагается запущенный батник.
Список переменных сред
%ALLUSERSPROFILE% размещение профиля «All Users»
%APPDATA% используемое по умолчанию размещение данных приложений
%CD% путь к текущей папке
%CMDCMDLINE% строка команд, с помощью которой был запущен данный экземпляр Cmd.exe
%CMDEXTVERSION% номер версии текущих расширений обработчика команд
%COMPUTERNAME% имя компьютера
%COMSPEC% путь к исполняемой командной оболочке
%DATE% текущие данные, использует тот же формат, что и команда date /t
%ERRORLEVEL% код ошибки последней использовавшейся команды
%HOMEDRIVE% имя диска локальной рабочей станции
%HOMEPATH% полный путь к основному каталогу пользователя
%HOMESHARE% сетевой путь к общему основному каталогу пользователя
%LOGONSEVER% имя контроллера домена, который проверял подлинность текущей сессии
%NUMBER_OF_PROCESSORS% количество процессоров, установленных на компьютере
%OS% имя операционной системы
%PATHEXT% список расширений файлов
%PROCESSOR_ARCHITECTURE% архитектура процессора. Значения: x86, IA64
%PROCESSOR_IDENTFIER% описание процессора
%PROCESSOR_LEVEL% номер модели процессора, установленного на компьютере
%PROCESSOR_REVISION% номер модификации процессора
%ProgramFiles% путь к Program Files
%PROMPT% параметры командной строки для текущего интерпретатора
%RANDOM% произвольное десятичное число от 0 до 32767
%SYSTEMDRIVE% имя диска, содержащего корневой каталог
%SYSTEMROOT% размещение системного каталога Windows
%TIME% текущее время
%USERDOMAIN% имя домена, содержащего список учетных записей пользователей
%USERNAME% имя пользователя, выполнившего вход в систему
%USERPROFILE% размещение профиля для текущего пользователя
%WINDIR% размещение каталога операционной системы
Если Вы хотите посмотреть чему равна переменная среды на Вашем компьютере в командной строке(окно CMD), не забывайте прописывать впереди переменной «echo»
echo — команда предназначенная для отображения строки текста
Например если Вы захотите узнать текущее время %TIME% и просто напишите %TIME% в CMD — то получите ошибку: «Синтаксическая ошибка в имени файла, имени папки или метке тома»
Если напишете echo %TIME% — то узнаете точное время
Батником вывести информацию в txt можно так
echo off
chcp 1251
echo сегодня %DATE% время %TIME% >> docent. txt
echo имя компьютера %COMPUTERNAME% >> docent.txt
echo имя юзера %USERNAME% >> docent.txt
echo где Винда %WINDIR% >> docent.txt
echo и т.д. и т.п >> docent.txt
Использование переменной при удалении файлов и папок с помощью Bat файла
Удаление папки Docent которая находится на диске С в WINDOWS
RD С:\WINDOWS\Docent /S/Q
То-же самое, но удаляем папку с помощью переменной %WINDIR%
RD %WINDIR%\Docent /S/Q
Использование переменной при перемещении файлов
Перемещение текстового файла docent.txt из папки WINDOWS на диске С в папку Program Files которая тоже на диске С
MOVE «C:\WINDOWS\docent.txt» «C:\Program Files»
То-же самое, но перемещаем с помощью переменных %WINDIR% и %ProgramFiles%
MOVE «%WINDIR%\docent.txt» «%ProgramFiles%»
скопировано с: http://docent777.ru/publ/ot_docenta/pro_batniki/peremennye_sredy_v_cmd_bat_fajle/1-1-0-29
источник: www. docent777.ru
(Всего просмотров: 33 288, просмотров сегодня: 11)
Переменные (Variable) на языке Batch
Сайт бесплатного изучения языков:
- Английский
- вьетнамский
- Другие языки
Следуйте за нами на нашей фан-странице, чтобы получать уведомления каждый раз, когда появляются новые статьи.
1- Что такое переменная?
Переменная является базовым понятием в компьютерной науке, это значение, которое может меняться. Как и другие языки, Batch так же имеет понятие переменной.
В принципе Batch имеет 2 вида переменных:
- Переменные объявлены в файле через команду set.
- Переменная аргумента (Argument variable), передается (pass) снаружи когда файл вызывается для выполнения.
2- Распространенные переменные
Язык Batch не имеет ясное понятие о виде данных, обычно переменная имеет значение строки (string), включая символы после знака = до конца строки (Включая пробелы если есть).
Если вы хотите объявить переменную как число, вам нужно использовать команду set /A
Для получения доступа в значение переменной, вам нужно закрыть (enclosed) заключить ту переменную в скобках со знаками %.
Пример:
variableExample1.bat
@echo off set name=Tran set /A age= 37 echo %name% echo %age% set info=My Name is: %name%, Age: %age% echo %info% pause
variableExample2.bat
@echo off set /A a = 100 set /A b = 200 echo a = %a% echo b = %b% set /A sum = a + b echo Sum = %sum% pause
3- Переменные аргумента (Arguments variable)
Когда идет вызов для выполнения файла batch, вы можете передать (pass) значения в файл. Внутри файла вы можете получить доступ в эти значениячерез переменные %1, %2, %3,… Эти переменные так же называются переменными аргумента (Argument variables).
argumentVariables.bat
@echo off @echo First argument is: %1 @echo Second argument is: %2 pause
Мы протестируем пример выше, открывая окно CMD, и CD к папке, содержащей файл argumentVariables. bat
Выполнить файл argumentVariables.bat с параметрами.
Результат:
4- Рамки переменной
Когда командное окно (Command Window) открывается, оно начнет сеанс работы (session). Тот сеанс работы завершится когда закроется командное окно. Во время сеанса работы вы можете выполнить один или много файлов batch. Переменные созданные в предыдущих файлах могут быть доступны в следующих файлах. Такие переменные называются глобальными переменными (Global Variable). Но вы можете создать локальную переменную (Local Variable), локальная переменная существует только в файле определяющей ее, или только существует в коде того файла.
Пример локальной переменной (Local Variables)
Локальные переменные (Local variable) объявлены в блоке, начинаются с setlocal и заканчиваются на endlocal.
localVariable.bat
@echo off set global1=I am a global variable 1 setlocal set local1=I am a local variable 1 set local2=I am a local variable 2 echo ----- In Local Block! ----- echo local1= %local1% echo local2= %local2% endlocal echo .. echo ----- Out of Local Block! ----- echo global1= %global1% echo local1= %local1% echo local2= %local2% pause
Пример глобальной переменной (Global Variables):
Переменные объявлены в файле Batch, и не находятся в блоке команд setlocal .. endlocal, будут глобальными переменными. Они могут быть использованы в других файлах в одном и том же сеансе работы (Session).
В данном примере у нас есть 2 файла batchFile1.bat и batchFile2.bat. Переменная MY_ENVIRONMENT определяется в файле 1, и используется в файле 2.
batchFile1.bat
@echo off set MY_ENVIRONMENT=C:/Programs/Abc;C:/Test/Abc
batchFile2.bat
@echo off echo In batchFile2.bat echo MY_ENVIRONMENT=%MY_ENVIRONMENT%
Открыть окно CMD, и CD к папке содрежащей файл batchFile1.bat, batchFile2.bat, запустить поочередно каждый файл.
5- Переменные среды Windows
Windows позволяет вам создать переменные среды, данные переменные будут глобальными переменными, которые можно использовать в любых файлах batch.
В Windows выберите:
- Start Menu/Control Panel/System
- Advanced (Tab) > Environment Variables..
Здесь вы можете создать переменную среды для текущего user, или переменную среды системы (system environment variable), который можно использовать любым user.
Например, я создаю переменную среды с названием MY_ENVIRONMENT_VARIABLE и значением «My Environment Variable Value!».
И можно использовать только что созданную переменную среду в файле batch.
testEnvVariable.bat
@echo off echo %MY_ENVIRONMENT_VARIABLE% pause
Как передать переменные из одного пакетного файла в другой пакетный файл?
спросил
Изменено
1 месяц назад
Просмотрено
54к раз
Как написать пакетный файл, который получает входную переменную и отправляет ее в другой пакетный файл для обработки.
Пакет 1
Я не знаю, как отправить переменную в пакет 2, и это моя проблема.
Пакет 2
if %variable%==1 перейти Пример перейти :EOF :Пример эхо YaY
- пакетный файл
4
Вам вообще ничего не нужно делать. Переменные, установленные в пакетном файле, видны в пакетном файле, который он вызывает.
Пример
@echo off установить х=7 вызов test2.bat установить х=3 вызов test2.bat Пауза
эхо В test2.bat с x = %x%.
… при запуске test1.bat.
В test2.bat с x = 7. В test2.bat с x = 3. Нажмите любую клавишу для продолжения . . .
0
Вы можете передать переменные batch2.bat в качестве аргументов в batch3.bat.
arg_batch2.bat
@эхо выключено клс установить file_var1 = мир установить file_var2 =% имя_компьютера% вызвать arg_batch3.bat %file_var1% %file_var2% :: Обратите внимание, что после запуска batch3.bat поток возвращается сюда, но поскольку :: нечего больше запускать, код заканчивается, создавая видимость окончания ::batch3.bat является концом кода.
arg_batch3.bat
@эхо выключено :: Здесь действительно должна быть проверка ошибок, чтобы гарантировать :: передана допустимая строка, но это всего лишь пример. установить аргумент1=%~1 установить аргумент2=%~2 эхо Здравствуйте, %arg1%! Меня зовут %arg2%.
Если вам нужно запустить сценарии одновременно, вы можете использовать временный файл.
file_batch2.bat
@эхо выключено установить переменную = мир :: Сохранить имя и значение переменной в форме var=value :: > перезапишет любые существующие данные в args.txt, используйте >> для добавления в конец эхо var1=мир>args.txt эхо-переменная2=%ИМЯ_КОМПЬЮТЕРА%>>args.txt вызвать file_batch3.bat
file_batch3.bat
@эхо выключено клс :: Получить значение переменной из args.txt :: Опять же, в идеале здесь должна быть некоторая проверка ошибок, но это пример :: Не устанавливайте разделители, чтобы вся строка обрабатывалась сразу для /f "delims=" %%A в (args.txt) сделать ( установить %%A ) эхо Здравствуйте, %var1%! Меня зовут %var2%.
Если вы читаете ответы и по-прежнему сталкиваетесь с проблемами, возможно, вы неправильно используете setlocal
.
setlocal
работает как пространство имен с endlocal
закрытие последнего открытого пространства имен.
Если вы поместите endlocal
в конец вашего вызываемого объекта, как я делал по умолчанию, ваша переменная будет потеряна в ранее открытом setlocal
.
Пока ваша переменная установлена в том же «локальном» месте, что и ваш файл вызывающего абонента, все будет в порядке.
Есть 2 способа. Один пишет в файл, а другой нет.
Все включают: setlocal EnableDelayedExpansion
Batch2: (.bat или .cmd)
установить myvar1=x 1920 установить myvar2=y 1080 установить myvar > MyConfig.ini REM (Используйте >> для добавления файла и сохранения существующих записей вместо перезаписи.)
Будет создан/добавлен файл MyConfig.ini, содержащий:
myvar1=x 1920 myvar2=y 1080
Batch3:
для /f "delims== tokens=1,2" %%I в (myconfig.ini) установить %%I=%%J
Затем для myvar1 и myvar2 будут установлены сохраненные значения.
Чтобы избежать хранения файлов на диске, попробуйте кое-что, что я придумал: 9& установить myvar2=y 1080
Пакет 3:
для /f "tokens=*" %%G в ('gettitle.exe') сделать (установить titlenow=%%G) %titlenow%
В результате Batch3 выполняет команды…
set myvar1=x 1920& set myvar2=y 1080
…для репликации переменных из пакета 2.
Переменные могут быть изменены и возвращены в пакет 2 таким же образом.
Он идеально подходит для параллельной обработки приложений ИИ на суперкомпьютерах под управлением Windows 10! lol
gettitle.exe взят с http://www.robvanderwoude. com
Вы можете найти решение ниже —
переменная идет сюда >> "второй файл идет сюда.bat"
Этот код записывает переменные во второй файл, если он существует. Даже если он не существует, он создает новый файл.
1
Зарегистрируйтесь или войдите
Зарегистрироваться через Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Как прочитать содержимое файла в переменную в пакетном файле?
спросил
Изменено
1 год, 6 месяцев назад
Просмотрено
540 тысяч раз
Этот пакетный файл переводит сборку из TEST в LIVE. Я хочу добавить в этот файл проверочное ограничение, гарантирующее наличие сопутствующего документа о выпуске в определенной папке.
"C:\Program Files\Windows Resource Kits\Tools\robocopy.exe" "\\testserver\testapp$" "\\liveserver\liveapp$" *.* /E /XA:H /PURGE /XO /XD ".svn" /NDL /NC /NS /NP del "\\liveserver\liveapp$\web.config" ren "\\liveserver\liveapp$\web.live.config" web.config
Итак, у меня есть пара вопросов о том, как этого добиться…
В папке
\\testserver\testapp$
есть файлversion.txt
, и единственным содержимым этого файла является номер сборки (например, 45 — для сборки 45)
Как прочитать содержимоефайл version.txt
в переменную в командном файле?Как проверить, существует ли файл
\\fileserver\myapp\releasedocs\ {build}.doc
, используя переменную из части 1 вместо {build}?
- пакетный файл
Прочитать содержимое файла в переменную:
для /f "delims=" %%x в (version.txt) установить Build=%%x
или
set /p Build=<версия.txt
Оба будут действовать одинаково только с одной строкой в файле, для большего количества строк для варианта
поместит последнюю строку в переменную, а set /p
будет использовать первой.
Использование переменной — как и любой другой переменной среды — в конце концов, это одна:
%Build%
Итак, чтобы проверить наличие:
если существует \\fileserver\myapp\releasedocs\%Build%.doc ...
Хотя вполне может быть, что UNC-пути там не разрешены. Не могу проверить это прямо сейчас, но имейте это в виду.
12
Вы можете прочитать несколько переменных из файла следующим образом:
for /f "delims== tokens=1,2" %%G в (param.txt) установить %%G=%%H
где param.txt:
PARAM1=значение1 ПАРАМ2=значение2 ...
4
просто сделайте:
введите version.