簡體   English   中英

將Unix轉換為Windows Shell腳本

[英]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.

什么是正確的轉換?

兩個問題:

  1. “循環變量”只能有一個字符。 例如,嘗試僅使用%%s 注意,根據FOR循環的類型,名稱具有含義(有關更多信息,請參見FOR /? )。 例如,當與`FOR / F“ tokens = ...”``一起使用時。 對於您而言,這沒關系。
  2. 開括號必須與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM