У меня есть следующий скрипт Unix:
ZECOM = /path/to/command/dothis
for FILEg in *g.F
do
echo $FILEg
FILE=`echo $FILEg | sed 's/g\./\./' | sed 's/\.F/\.f/'`
$ZECOM -someoption -f ./optionsfile.sh $FILE $FILEg somelib.so
FILEZECOM=`echo $FILE | sed 's/\.f/\.zecomextension64/'`
chmod ugo+x $FILEZECOM
done
что я хочу перевести в пакетный скрипт.
Я придумал:
SET ZECOM = "C:\path\to\command\dothis.exe"
for %%FILEg in (*g.F) do (
echo %%~nf
SET FILE = `echo %%~nFILEg | sed 's/g\./\./' | sed 's/\.F/\.f/'`
ZECOM -someoption -f %FILE% %%~nFILEg somelib.lib
SET FILEZECOM=`echo %FILE% | sed 's/\.f/\.zecomextension64/'`
cacls %FILEZECOM% /g everyone:f
)
но, конечно, это не работает, так как sed
не является признанной командой ... Конечно, есть 32-битная версия sed для Windows, которая жалуется на отсутствие некоторых dll. Так, каковы были бы мои варианты / альтернативы в этой ситуации?
Некоторая справочная информация :
Скрипт ищет в своем каталоге все файлы, оканчивающиеся на "g.F ", и для любого такого файла totog.F
также имеется (по построению, на данный момент я хочу запустить свой скрипт) файл гомологов toto.f
; затем скрипт выполняет команду acommand
на которую ZECOM
указывает: ZECOM -someoption -f %FILE% %%~nFILEg somelib.lib
то есть: acommand -someoption -f toto.f totog.F somelib.lib
где someoption
- это какой-то конкретный параметр команды acommand
и где somelib.lib
указывают, что команда должна выполняться при соединении с библиотечным файлом somelib.lib
.
Это создает файл toto.zecomextension64
. ("zecomextension64" является расширением создаваемых файлов.) Тогда cacls
дает все права всем, на произведенный файл. (Эти созданные файлы будут выполняться и считываться многими разными пользователями через одну и ту же программу, которую они все будут запускать в своем собственном сеансе.)
Basilly, я использовал sed
на Unix, чтобы сделать отображение строк "totog.F" --> "toto.f"
и "toto.f" --> "toto.zecomextension64"
.