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

Ответить
 • Просмотры: 1
Аватара пользователя
russur

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

Сообщение russur »

Доброго дня!



Прошу очень помочь с батником.

Его задача обработать архивный файл. Он его сам распаковывает и раскидывает содержимое по папкам, но дело в том, что перед началом работы батника, в нём нужно прописать название этого архива.

Условие: изначально архивный файл лежит в папке, куда он предварительно скачивается с фтп.

Он единственный архив в той папке, поэтому условие можно как от привязать к самой папке, типа: "взять имея с любого архива arj в той папке"



Вот строка:

"D:\bik\arj.exe" x D:\bik\1800.arj D:\bik\-r



нужно как то сделать, чтобы 1800 стала переменной, название бралось от самого файла, который лежит по пути C:\work\1800.arj
Аватара пользователя
Iska

Re: CMD/BAT - Переменная в батнике, зависимая от имени файла

Сообщение Iska »

Получить в переменную окружения «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
Аватара пользователя
russur

Re: CMD/BAT - Переменная в батнике, зависимая от имени файла

Сообщение russur »

russur, нет.




Цитата russur:



Условие: изначально архивный файл лежит в папке…
CMD/BAT - Переменная в батнике, зависимая от имени файла




Какой путь к этой папке?




Цитата russur:



Вот строка:

"D:\bik\arj.exe" x D:\bik\1800.arj D:\bik\-r
CMD/BAT - Переменная в батнике, зависимая от имени файла





Цитата russur:



нужно как то сделать, чтобы 1800 стала переменной, название бралось от самого файла, который лежит по пути C:\work\1800.arj
CMD/BAT - Переменная в батнике, зависимая от имени файла




Я не могу никак логически связать поиск файла «*.arj» в папке «C:\work» и попытку использования имени найденного файла в папке «D:\bik». Поясните этот вопрос.
Аватара пользователя
Iska

Re: CMD/BAT - Переменная в батнике, зависимая от имени файла

Сообщение Iska »

Есть папка: 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
Аватара пользователя
russur

Re: CMD/BAT - Переменная в батнике, зависимая от имени файла

Сообщение russur »

Есть папка: 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
Аватара пользователя
Iska

Re: CMD/BAT - Переменная в батнике, зависимая от имени файла

Сообщение Iska »

Примерно так:



Код:

Код: Выделить всё

@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
Аватара пользователя
russur

Re: CMD/BAT - Переменная в батнике, зависимая от имени файла

Сообщение russur »

Цитата russur:



В этом батнике прописано: "D:\bik\arj.exe" x D:\bik\1800.arj D:\bik\-r
CMD/BAT - Переменная в батнике, зависимая от имени файла





Цитата russur:



Если жестко прописать строчку:

"D:\bik\arj32.exe" x "D:\bik\1800.arj" "d:\bik" -r
CMD/BAT - Переменная в батнике, зависимая от имени файла




Вы продолжаете давать противоречивую информацию.



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

Re: CMD/BAT - Переменная в батнике, зависимая от имени файла

Сообщение Iska »

D:\bik\arj32.exe - вот так, прошу прощения

Просто я делаю и на своём компе и на сервере за одно и путаюсь.

Архиватор лежит по пути D:\bik\arj32.exe
Аватара пользователя
russur

Re: CMD/BAT - Переменная в батнике, зависимая от имени файла

Сообщение russur »

D:\bik\arj32.exe - вот так, прошу прощения

Просто я делаю и на своём компе и на сервере за одно и путаюсь.

Архиватор лежит по пути D:\bik\arj32.exe
Ответить

Вернуться в «Скриптовые языки администрирования Windows»