Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Переменная в батнике, зависимая от имени файла

Ответить
Настройки темы
CMD/BAT - Переменная в батнике, зависимая от имени файла

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить 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
Благодарности: 8087

Профиль | Отправить 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
Получить в переменную окружения «sArcName» путь к первому «*.arj» файлу из указанного каталога:
Код: Выделить весь код
@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

Отправлено: 08:24, 24-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить 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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


russur, нет.

Цитата russur:
Условие: изначально архивный файл лежит в папке…»
Какой путь к этой папке?

Цитата russur:
Вот строка:
"D:\bik\arj.exe" x D:\bik\1800.arj D:\bik\-r »
Цитата russur:
нужно как то сделать, чтобы 1800 стала переменной, название бралось от самого файла, который лежит по пути C:\work\1800.arj »
Я не могу никак логически связать поиск файла «*.arj» в папке «C:\work» и попытку использования имени найденного файла в папке «D:\bik». Поясните этот вопрос.

Отправлено: 10:38, 24-05-2012 | #4


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить 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
Благодарности: 8087

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


че то не работает

Архиватор есть.
Если жестко прописать строчку:
"D:\bik\arj32.exe" x "D:\bik\1800.arj" "d:\bik" -r

при чем убрать слово echo, то распаковка идёт. Видимо че то с переменной не так, а именно с sArcName

Отправлено: 11:34, 25-05-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата russur:
В этом батнике прописано: "D:\bik\arj.exe" x D:\bik\1800.arj D:\bik\-r »
Цитата russur:
Если жестко прописать строчку:
"D:\bik\arj32.exe" x "D:\bik\1800.arj" "d:\bik" -r »
Вы продолжаете давать противоречивую информацию.

Так как же всё-таки у Вас зовётся исполняемый файл архиватора, а?

Отправлено: 11:46, 25-05-2012 | #8


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


D:\bik\arj32.exe - вот так, прошу прощения
Просто я делаю и на своём компе и на сервере за одно и путаюсь.
Архиватор лежит по пути D:\bik\arj32.exe

Отправлено: 12:01, 25-05-2012 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Продолжаем: какую конкретную версию «arj32.exe» Вы используете?

Отправлено: 12:02, 25-05-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Переменная в батнике, зависимая от имени файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход