[英]Convert unix to windows shell script
我正在嘗試將以下unix shell腳本轉換為Windows:
for strWorkerDirectory in $BASEDIR/worker01/applogs $BASEDIR/worker01/filtered $BASEDIR/worker01/filtered/error-logs $BASEDIR/worker01/filtered/logs $BASEDIR/worker01/filtered/session-logs
do
if [ ! -d $strWorkerDirectory ]; then
mkdir -p $strWorkerDirectory
fi
done
到目前為止,我想到了這個:
FOR %%strWorkerDirectory IN (%BASEDIR%worker01\applogs %BASEDIR%worker01\filtered %BASEDIR%worker01\filtered\error-logs %BASEDIR%worker01\filtered\logs %BASEDIR%worker01\filtered\session-logs) DO
(
IF exist %%strWorkerDirectory ( echo %%strWorkerDirectory exists ) ELSE ( mkdir %%strWorkerDirectory && echo %%strWorkerDirectory created)
)
但我收到一條錯誤消息,提示此處有問題
"%strWorkerDirectory" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
什么是正確的轉換?
兩個問題:
%%s
。 注意,根據FOR
循環的類型,名稱具有含義(有關更多信息,請參見FOR /?
)。 例如,當與`FOR / F“ tokens = ...”``一起使用時。 對於您而言,這沒關系。 DO
在同一行 完整的例子:
FOR %%s IN (%BASEDIR%worker01\applogs %BASEDIR%worker01\filtered %BASEDIR%worker01\filtered\error-logs %BASEDIR%worker01\filtered\logs %BASEDIR%worker01\filtered\session-logs) DO (
IF exist %%s ( echo %%s exists ) ELSE ( echo mkdir %%s && echo %%s created)
)
提示:可以使用脫字符號( ^
)作為換行符,以免線條過長。 只要確保插入符號后確實沒有其他字符(甚至沒有空格)即可。
FOR %%s IN (%BASEDIR%worker01\applogs ^
%BASEDIR%worker01\filtered ^
%BASEDIR%worker01\filtered\error-logs ^
%BASEDIR%worker01\filtered\logs ^
%BASEDIR%worker01\filtered\session-logs) DO (
IF exist %%s ( echo %%s exists ) ELSE ( echo mkdir %%s && echo %%s created)
)
編輯正如評論者@dbenham指出的那樣,上面的行連續實際上不是必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.