0

%params%引数の可変セットが含まれています。

/tidy /log /truncate /convert D:\libdir または多分

/log /tidy D:\cyclea\libfolder /test /convert /truncate

(現在単一の)ファイルパス要素以外のすべてに対して、私はそれを次のように使用します:

 if "%params%"=="%params:log=%" goto :DontLogit

   if NOT "%params%"=="%params:/tidy=%" (call tidysub: & do something else )

ここで、ファイルパス要素を抽出し、それをコマンドの引数として使用したいと考えています。chdir

遊んだことはありますが、CMDの文字列操作とforループが苦手です。

params 変数の順序を維持したいと思います。情報については、ここから来ます:

   FOR %%s IN (%*) DO (set params=!params! %%s)
4

2 に答える 2

0
@echo off
setlocal EnableDelayedExpansion

rem Get the single filepath element (with colon in second character):
set params=/tidy /log /truncate /convert D:\libdir
set filepath=
for %%a in (%params%) do (
   set par=%%a
   if "!par:~1,1!" == ":" (
      set filepath=%%a
   )
)
if defined filepath (
   echo Filepath = %filepath%
) else (
   echo Filepath not given
)
echo/

rem Get multiple filepath elements in an *array*:
set params=/log /tidy D:\cyclea\libfolder /test /convert D:\libdir /truncate
set i=0
for %%a in (%params%) do (
   set par=%%a
   if "!par:~1,1!" == ":" (
      set /A i+=1
      set filepath[!i!]=%%a
   )
)
echo There are %i% filepath elements:
for /L %%i in (1,1,%i%) do (
   echo %%i- !filepath[%%i]!
)

この投稿で配列管理の詳細な説明を確認できます: cmd.exe (バッチ) スクリプトの配列、リンクされたリスト、およびその他のデータ構造

于 2013-04-14T04:59:01.937 に答える