-1

У меня есть следующий скрипт 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" .

1 ответ1

0

Моя попытка, последние две команды отображаются только для проверки вывода.

@Echo off & Setlocal EnableDelayedExpansion
SET "ZECOM=C:\path\to\command\dothis.exe"

for %%F in (*g.F) do (
    echo %%~nF
    SET "FILE=%%~nF"
    echo "%ZECOM%" -someoption -f "!%FILE:~0,-1!"  "!FILE!" somelib.lib
    echo cacls "!FILE:.F=.ZECOM!" /g everyone:f
)

Если вывод выглядит нормально, удалите echo

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .