Bat папка где находится файл
Если системные переменные окружения доступны всегда по всей системе, то локальные работают только в рамках конкретной учётной записи пользователя. Их количество может быть значительным, а состав отличаться даже для разных пользователей одного и того же ПК. Однако, есть ряд переменных, которые обычно присутствуют везде.
Бывает так, что написанный Вами BAT-файл работает на одном компьютере, но не работает на другом. Ошибка часто заключается в том, что были использованы прямые пути к файлам. Например батник для копирования всех текстовых файлов находящихся в папке windows на диске C
Такой батник будет работать на любом компьютере, только если операционная система установлена на диск С, если ОС расположена на другом диске D,F,K,J и т.д., необходимо использовать переменную %WINDIR%
Такой батник будет работать на любом компьютере — без разницы на какой диск установлена ОС
Переменные среды — текстовые переменные операционной системы, хранящие данные о ряде настроек системы. Используются переменные среды при копировании, перемещении, переименовании, удалении, создании файлов и папок других действий в командной строке.
Список переменных среды ОС Windows Вы можете посмотреть введя в командной строке: set и нажав клавишу Enter Также можно вывести список переменных в текстовый файл с помощью батника
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 сегодня %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%
Мне 12 и я сам в этой теме плохо шарю, т.к. инфы в инете мало. Пж, без хейта.
ОТВЕТЫ
Ответ 1
Из вашего командного файла:
- %cd% ссылается на текущий рабочий каталог (переменная)
- %~dp0 указывает на полный путь к каталогу пакетных файлов (статический)
- %~dpnx0 и %~f0 оба ссылаются на полный путь к каталогу пакета и имя файла (статический).
Ответ 2
Обычно это каталог, из которого запущен командный файл, но если вы запускаете командный файл из ярлыка, может быть задан другой стартовый каталог. Кроме того, когда вы находитесь в cmd, а ваш текущий каталог c:\dir3 , вы все равно можете запустить командный файл с помощью c:\dir1\dir2\batch.bat , в этом случае текущий каталог будет c:\dir3 .
Ответ 3
В пакетном файле% cd% является наиболее часто используемой командой для текущего каталога, хотя вы можете установить свою собственную переменную:
Скажем, вы хотели открыть Myprog.exe. Если бы он был в той же папке, вы бы использовали команду:
Это откроет Myprog из текущей папки.
Другой вариант - создать каталог в C: с именем AutomatePrograms. Затем вы переносите свои файлы в эту папку, а затем можете открыть их с помощью следующей команды:
Ответ 4
Это каталог, из которого вы запускаете командный файл. Например. если ваша партия находится в c:\dir1\dir2 , и вы выполняете cd c:\dir3 , затем запустите пакет, текущий каталог будет c:\dir3 .
Ответ 5
Это каталог, из которого вы запускаете команду для выполнения командного файла.
Как уже упоминалось в приведенных выше ответах, вы можете добавить следующую команду в свой script, чтобы проверить:
Ответ 6
Предположим, вы открыли файл в своем текущем каталоге. Команда будет следующей:
Надеюсь, я ответил на ваш вопрос.
Ответ 7
При попытке открыть файл bat в режиме администратора следующая команда не выполняется (мне нужно выполнить некоторые команды в существующих рабочих каталогах).
установить mypath =% cd%
Но это работает нормально
установить mypath =% ~ dp0
Ответ 8
Просто мои 2 цента. Следующая команда не выполняется, если она вызывается из пакетного файла (Windows 7), размещенного на pendrive:
Что такое батники и с чем их едят
Наводим красоту
не эта :)
не делает ничего и служит комментарием к коду
Следующий код код работает, как команда "pause", но ничего не выводит на экран и не реагирует на нажатие клавиш(я потом объясню, как это работает).
А этот - меняет заголовок окна на "name"
Заголовок окна
Эта команда меняет цвет фона и текста, вместо a и b можно поставить любые шестнадцатеричные цифры(команда не сработает если a = b) см. таблицу ниже. Запись c одной буквой "а" аналогично записи "0a"
Таблица
Эта - досрочно завершает программу
Подробнее о переменных
Если добавить флаг "/p", то выводиться значение после символа " bash">@echo off set /p a=Enter str echo %a% pause
следующий код вырезает строку от символа номер "a" до символа номер "b" НЕ включительно(счет идет с нуля, отрицательные числа - счет с конца от единицы). Если аргумент один, то он присваивается числу "b", а "a" = 0
следующий заменяет подстроки "a" в строке на строки "b":
Первая программа и основные команды
test.bat
Нажимаем на него ПРАВОЙ кнопкой мыши. Должно появиться диалоговое окно. Нажмем "Открыть". Должен открыться блокнот, пишем:
В 1-ой сроке ("@echo off") префикс '@ ' означает, что команда не будет выведена на экран(попробуйте его убрать :-) ), сама же команда (echo) выводит текст следующий за ней(см. строку 2), НО, если подать строку "off", все последующие команды будут действовать так, как будто перед ними стоит префикс '@', "echo on", соответственно, выключает этот режим. Чтобы вывести символ "%", его нужно дублировать, потом поймете почему :-), для вывода пустой строки поставьте "." после "echo"
В 3-ей строке команда выводит строку "press any key to continue . . ." (если у вас русский язык - "Для продолжения нажмите любую клавишу . . .") и останавливает программу до нажатия любой клавиши.
Переменные
Создать переменную можно с помощью команды set, синтаксис объявления следующий: P.S. это не совсем переменные, это скорее макросы (для тех к кто не знает C/C++ это именованный кусочек кода, имя которого заменяется на этот кусочек кода)
Если после "set" добавить флаг "/a" то:
Переменной задастся значение выражения, а не его текст, например:
Переменной можно присвоить ТОЛЬКО числовое значение
Чтобы обратиться к переменной, нужно окружить ее символами "%" (так %name%), пример кода:
Циклы и условия
Цикл можно создать с помощью команды "for", синтаксис следующий:
(a b c) это список (не обязательно из 3-х элементов) и переменная %%i (нужно ставить символ после процентов, а не между) по очереди проходит по значениям в списке
Если добавить флаг "/l", то переменная в первый раз будет равна "a". К ней каждый раз будет прибавляться "b", пока она не станет больше "c"(тут размер ДОЛЖЕН равняться 3)
запустите этот код, тут все наглядно
Команда if выполняет код, если условие верно (или если поставить not после if, когда НЕ верно), вот операторы сравнения:
Работает, если в командной строке я заранее перейду в папку с bat файлом и запущу его, а вот если просто двойным кликом запущу bat файл, то нет, ругается, что файла такого нет. И не удивительно, ведь путь по умолчанию не туда указывает.
Как сделать, чтобы копирование в нужную папку происходило всегда, если я точно знаю, что нужный файл всегда лежит рядом с файлом bat, но не знаю как называется папка/диск на котором они лежат?
Всё, разобрался. Перед именем файла надо написать
Получить путь к исполняемому файлу
такой вопрос, мне надо написать функцию, которая будет возвращать путь к файлу. то есть к примеру.
Получить путь к исполняемому файлу службы
Доброго времени суток. мне нужно получить информацию о службах Windows. Путь, отобр имя, имя.
Как получить путь к исполняемому файлу приложения
в консольном приложении я делал так .. и работало .. int k=GetModuleFileName(NULL.
Путь к исполняемому файлу
Здравствуйте, вообщем проблема в следующем, необходимо указать путь к исполяемому файлу, т.е. я.
только без обратного слеша в конце (он уже есть там по умолчанию) и путь в кавычках, откуда вы (или кто другой) может быть уверен что в пути: %~dp0 нет пробелов или не окажется на каком-то этапе.
Путь к исполняемому файлу
Всем доброго времени суток. Я делаю приложение пока под платформу виндовс. Рядом с приложением.
Путь к исполняемому файлу
Хочу написать программу из двух частей. Вторую часть программы запускает первая, а вторая должна.
Как узнать путь к исполняемому файлу?
запускаю прогу test.exe как в ней самой определить где она находится(путь) всякие.
Узнать путь к исполняемому файлу приложения
Как узнать где находиться файл запуска моего проекта просто потом хочу привентитить относительна к.
Допустим есть файл 777.exe, где-то на диске С:\ и в какой-то папки
Нужно первой командой на диске найти файл 777.exe допустим он нашел его C:/pilot/777.exe
Создать папку C:/OLD в нее переместить папку "pilot" с файлами.
Создать папку с именем ( в данном случае pilot , имя той папки в которой нашли файл 777.exe ) в туже директорию , где первоначально она и была! ( в данном случае C:/ ) - "Если файл нашли в C:/1/2/3/4/pilot/777.exe то и новую папку с именем pilot нужно создать в C:/1/2/3/4/ " и переместить туда файлы с флешки и делать именно из нее запуск файлов и регистрацию допустим .dll
Найти файл, и в папку где лежит этот файл скопировать другой файл)
Задача описана в названии, но повторюсь. Надо найти папку с известным названием файла (123.txt).
Найти определенный файл, переименовать и переместить его в другую папку
Здравствуйте, помогите пожалуйста с задачей, с которой не так давно столкнулся. Настроен лог.
Как bat-ником перенести файл в папку, при том так чтобы это было не копирование файла в папку?
Не копия файла в папке, а сам файл. Этот код копирует файлы и переносит в папку Copy, а мне нужно.
Найти файл лога в папках пользователя, переименовать и переместить его в другую папку
Здравствуйте, помогите пожалуйста с задачей, с которой не так давно столкнулся. Настроен лог.
А теперь этот же отрывок, только человеческим языком опишите. Конкретнее: что откуда и куда нужно запускать. А также - при каких условиях.
Совсем нет.
Это по работе, чаще всего у нас папка с именем dv665 в директории С , но иногда бывает что кассовое ПО настроено под определенную папку где и прописана кассовая библиотека .dll если я создам батником стандартную папку она просто работать не будет т.к. касса ее не увидит. Вот и нужно чтобы батник нашел наш файл с их папкой. И сделал манипуляции , что описаны выше!
FraidZZ,
на флешки диск "Е" папка AD/810/dv665 там лежат файлы которые нужно перенести в созданную ( пустую папку , с идентичным именем которую мы переместили в папку OLD)
Запустить файлы уже непосредственно в папке ( не с флешки ) куда мы переместили НОВЫЕ файлы. допустим
regsvr32 %%%%%/pilot/gkrc.dll
regsvr32 %%%%%/pilot/gkrcru.dll
%%%%%/pilot/driver/setup.exe
pause (дождаться установки драйвера)
и.т.д
Добавлено через 6 минут
FraidZZ,
1. Найти файл 777.exe на диске С
2. Папку в которой лежит файл 777.exe вырезать и переместить в директорию С:/OLD ( создав папку OLD )
3. Создать папку с идентичным именем, что и в папке OLD и на то место где изначально она находилась ( откуда мы ее и вырезали )
4. С флеш-накопителя , диск "Е" - E:/AD/810/dv665 скопировать все файлы и переместить их в пункт 3
5. Зарегистрировать библиотеки из папки ( пункт 3 )
6. Запустить драйвер из папки ( пункт 3 )
7. Перезагрузить ПК
Я хочу создать несколько командных файлов для автоматизации программы.
Мой вопрос: когда я создаю командный файл, какой каталог является текущим? Это каталог, в котором находится файл, или это тот же каталог, который отображается в командной строке, или что-то еще?
Читайте также: