Наверное, я что-то неправильно спросил, раз господа так разгневались
Стояла задача получить некий аналог для следующего:
Код:
#!/bin/sh
X=${PWD##/*/}
rm $X.xpi
cd chrome
zip -r0 $X.jar content
cd ..
zip -r9 $X.xpi install.rdf defaults chrome/$X.jar
rm chrome/$X.jar
Получилось вот что (7z.exe должен быть где-нибудь в %PATH%):
Код:
echo off
set X=%~n1
if not defined X (call build %CD%) else (
cd chrome
7z a -tzip %X%.jar * -r -mx=0
cd ..
7z a -tzip %X%.xpi defaults install.* chrome\%X%.jar -r -mx=9
del chrome\%X%.jar
)
Имелся вариант bat-файла и без «синтаксического разбора» начального %CD%, но он был нехорош тем, что создавал что-то (%CD%.jar) за пределами каталога, в котором лежал. И вопрос, собственно, заключался в возможности «разобрать» переменную иначе, чем передачей её bat-файлом самому себе в качестве параметра. Например, используя каким-то образом возможность «разбора» переменных FOR.
Например, так (придумал, перечитав справку):
Код:
echo off
for %%X IN (%CD%) DO (
set Y=%%~nX
cd chrome
7z a -tzip %Y%.jar * -r -mx=0
cd ..
7z a -tzip %Y%.xpi defaults install.* chrome\%Y%.jar -r -mx=9
del chrome\%Y%.jar
)
В общем, действительно, «давно забытая магия, предания глубокой старины»…
Добавлено спустя 2 минуты 45 секунд:Чтобы не затруднять понимание, упрощу «содержательную часть».
Пусть в каталоге есть «одноименный» zip-архив, который нужно удалить.Оригинальный файл myfile.sh, лежащий там, был бы такой:
Код:
#!/bin/sh
X=${PWD##/*/}
rm $X.zip
Тогда его bat-аналог myfile.bat был бы такой:
Код:
set X=%~n1
if not defined X (call myfile.bat %CD%) else ( del %X%.zip )
или такой:
Код:
for %%X in (%CD%) do (del %%~nX.zip)