|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Переменная в батнике, зависимая от имени файла |
|
|
CMD/BAT - Переменная в батнике, зависимая от имени файла
|
Новый участник Сообщения: 11 |
Профиль | Отправить PM | Цитировать Доброго дня!
Прошу очень помочь с батником. Его задача обработать архивный файл. Он его сам распаковывает и раскидывает содержимое по папкам, но дело в том, что перед началом работы батника, в нём нужно прописать название этого архива. Условие: изначально архивный файл лежит в папке, куда он предварительно скачивается с фтп. Он единственный архив в той папке, поэтому условие можно как от привязать к самой папке, типа: "взять имея с любого архива arj в той папке" Вот строка: "D:\bik\arj.exe" x D:\bik\1800.arj D:\bik\-r нужно как то сделать, чтобы 1800 стала переменной, название бралось от самого файла, который лежит по пути C:\work\1800.arj |
|
Отправлено: 08:00, 24-05-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Получить в переменную окружения «sArcName» имя первого «*.arj» файла из текущего каталога:
@echo off setlocal enableextensions enabledelayedexpansion for /f "delims==" %%i in ('dir /b /a:-d /o:n "*.arj"') do if not defined sArcName set sArcName=%%i if defined sArcName echo %sArcName% endlocal exit /b 0 |
Отправлено: 08:24, 24-05-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать А как получить эту переменную, куда она пропишется?
Мне нужно, чтобы она прописалась в эту строчку ниже "D:\bik\arj.exe" x D:\bik\1800.arj D:\bik\ -r то есть батник получиться такой? @echo off setlocal enableextensions enabledelayedexpansion set sFolder=E:\Песочница\0144 for /f "delims==" %%i in ('dir /b /a:-d /o:n "%sFolder%\*.arj"') do if not defined sArcName set sArcName=%sFolder%\%%i if defined sArcName echo %sArcName% endlocal exit /b 0 "D:\bik\arj.exe" x D:\bik\%sArcName%.arj D:\bik\ -r |
Последний раз редактировалось russur, 24-05-2012 в 09:13. Отправлено: 08:50, 24-05-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать russur, нет.
Цитата russur:
Цитата russur:
Цитата russur:
|
|||
Отправлено: 10:38, 24-05-2012 | #4 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Есть папка: D:\bik
В ней находится файл: 1800.arj Есть батник: test.bat Задача батника распаковать этот файл. В этом батнике прописано: "D:\bik\arj.exe" x D:\bik\1800.arj D:\bik\-r Эта команда распаковывает файл 1800.arj из папки D:\bik Вот файл 1800.arj постоянно разный, он может называться и 1801.arj так вот чтобы в батнике постоянно не менять 1800.arj на 1801.arj например, надо чтобы батника автоматом подставлял туда значение к себе, в зависимости от того, какой файл лежит в папке D:\bik |
|
Отправлено: 16:01, 24-05-2012 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Примерно так:
@echo off setlocal enableextensions enabledelayedexpansion set sFolder=d:\bik if exist "%sFolder%\." ( for /f "delims==" %%i in ('dir /b /a:-d /o:n "%sFolder%\*.arj"') do if not defined sArcName set sArcName=%sFolder%\%%i if defined sArcName ( echo Found archive [!sArcName!] echo "%sFolder%\arj.exe" x "!sArcName!" "%sFolder%\" -r ) else ( echo Not found any *.arj files in [%sFolder%] ) ) else ( echo Not found folder [%sFolder%] ) endlocal exit /b 0 |
Отправлено: 16:32, 24-05-2012 | #6 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать че то не работает
Архиватор есть. Если жестко прописать строчку: "D:\bik\arj32.exe" x "D:\bik\1800.arj" "d:\bik" -r при чем убрать слово echo, то распаковка идёт. Видимо че то с переменной не так, а именно с sArcName |
Отправлено: 11:34, 25-05-2012 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата russur:
Цитата russur:
Так как же всё-таки у Вас зовётся исполняемый файл архиватора, а? |
||
Отправлено: 11:46, 25-05-2012 | #8 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать D:\bik\arj32.exe - вот так, прошу прощения
Просто я делаю и на своём компе и на сервере за одно и путаюсь. Архиватор лежит по пути D:\bik\arj32.exe |
Отправлено: 12:01, 25-05-2012 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Продолжаем: какую конкретную версию «arj32.exe» Вы используете?
|
Отправлено: 12:02, 25-05-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Запуск bat-файла от имени админа.Как сделать каталог этого bat-файла текущим?? | axmed0207 | Скриптовые языки администрирования Windows | 1 | 19-01-2012 06:14 | |
CMD/BAT - [решено] В батнике не получается получить строку из файла | Karlson | Скриптовые языки администрирования Windows | 8 | 11-10-2011 17:09 | |
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. | OSArev | Скриптовые языки администрирования Windows | 2 | 30-01-2011 11:58 | |
CMD/BAT - [решено] Переменная из текстового файла | taravasya | Скриптовые языки администрирования Windows | 1 | 20-02-2010 10:20 | |
CMD/BAT - [решено] Два файла - как одна переменная, переменная - как параметр | taravasya | Скриптовые языки администрирования Windows | 6 | 16-02-2010 04:49 |
|