2016-05-30 6 views
0

特定の(完全な完全パス)と*ワイルドカードファイル/フォルダ名の組み合わせを使用してファイル/フォルダの内容を表示するループを取得しようとしていますが、コードで*ワイルドカード検索します。私はそれがフォルダ/ディレクトリとファイルでうまく動作するので、DIRコマンドを使って検索しています。Windows Forループ*トークン

SETLOCAL EnableDelayedExpansion 
SET VAR="c:\users\admin\documents\" "my files*" "*.MYO" "backups" "history.*" "History" "*.db" "all accounts.txt" 
SET "ArchiveInclude=" 
FOR %%a IN (%VAR%) DO (
IF "!a::!"=="!a!" (
    SET LookUpSet=DIR /ON /B /S "%%~a" 
    FOR /F "Delims=" %%F IN ('!LookUpSet!') DO (
    SET ArchiveInclude=!ArchiveInclude! "%%~F" 
) 
) ELSE (SET ArchiveInclude=!ArchiveInclude! "%%~a") 
) 

は残念ながらArchiveIncludeは、任意の "私のファイル*" ".myo" や "歴史。" の検索結果が含まれていません。 %% aはワイルドカード*を含む文字列を決して処理しません。

私はArchiveIncludeは、例えば指定されたすべてのファイル/フォルダへのすべての完全なパス参照を含める必要があり

ECHO !ArchiveInclude! 
"c:\users\admin\documents\" "c:\Users\User 3\my files here\" "c:\Users\User 1\Documents\my files01.txt" "c:\Users\User 1\Documents\my files02.txt" "c:\Users\User 1\Documents\my files01.jpg" "c:\Users\User 1\Documents\my files02.jpg" "c:\Users\User 2\Documents\My Account Files.MYO" "c:\Users\User 2\Documents\Business\Sales Accounts.MYO" "c:\Program Files\history.db" "c:\Program Files\history.txt" "c:\Users\User 1\Documents\History\" "c:\Users\User 1\Documents\Databases\afile.db" "c:\Users\User 1\Documents\Databases\data.db" "c:\Users\User 1\Documents\Databases\last.db" "c:\Users\User 2\Documents\all accounts.txt" 

答えて

0

問題は、この行を次のとおりです。

FOR %%a IN (%VAR%) DO (

あなたは省スペースにVARを設定しましたファイル名の区切りリスト、ワイルドカード付きのリストワイルドカードを使用すると、FORコマンドはカレントディレクトリでワイルドカードと一致するファイル(ヘルプはFOR/?と入力します)を検索します。これはあなたが望むものではありません。あなたはその時点でFORを検索しないでください。それらに含まれているものに関係なく、指定された文字列を繰り返し処理するだけです。

コマンドは複数のパラメータを取ることができるので、FORを使用する必要はありません。だから、あなただけの完全FORラインを取り除くことができ、代わりにこれを行う:

SET LookUpSet=DIR /ON /B /S %VAR% 
+0

単一のファイル/フォルダ名+ワイルドカードに適していますということ。しかし、私はDIRコマンドが完全にpathedフォルダのすべての内容を個別に(必須ではない)リストするので、DIRコマンドから既に指定された(完全にpathedされた)フォルダ/ファイルを除外する方法も必要です。つまり、VAR = "C:¥users¥admin¥documents" "my files *" ".myo" "backups" "history"となります。 "all accounts.txt" DIRコマンドは、 "C:\ users \ admin \ documents \"のすべての内容を表示しますが、これは必須ではありません。 OPの明瞭性の欠如のために申し訳ありません、私は今それを更新しました。 – jkeys