0

果物の名前を含むファイル名がたくさんあるとしましょう。参照ファイル (果物の名前、期間、デザートの名前を含むダミーの txt ファイル) でいっぱいのフォルダーに基づいて、それらの名前を自動変更したいと考えています。

リンゴ.タルト、グレープ.ゼリー、キウイ.ケーキ、マンゴー.アイスクリーム、バナナ.プリン、チェリー.コブラーなど

名前を変更するすべてのファイルを選択し、スクリプトにドラッグします。

  1. ループ内のファイルに「cherry.cobbler」などの特定のコンボが既に含まれている場合は、単にダミーファイルを破棄し、ファイルの名前を「cherry.cobbler.cobbler」に変更しないでください。

  2. ループ内のファイルに「kiwi」という単語が含まれている場合、「kiwi.cake」が含まれるように変更したいと考えています。

  3. ループ内のファイルにリストされていない果物が含まれている場合は、キャッチオール文字列を追加する必要があります。したがって、「キンカン」は「kumquat.nodessert」になります。

問題を引き起こしているのは条件 3 です。最後のダミーファイルがいつチェックされたかを指定する正しい構文が思いつかないようです。

ここにいくつかの擬似コードがあります

Loop %0%
{
   Path := %A_Index%
    Loop %Path%, 1
    LongPath = %A_LoopFileLongPath%    
    SplitPath LongPath, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive


    Loop thru folder of fruit combos
         {
         Stringsplit filenames from fruit-combos folder into %fruit% and %dessert%

         If OutNameNoExt contains %fruit%.%dessert%
             {
             FileDelete fruit.combo dummyfile
             continue; skip to next file to rename
             )

         If OutNameNoExt contains %fruit%
             {
             FileDelete fruit.combo dummyfile
             StringReplace %fruit% with %fruit%.%dessert%
             continue; skip to next file to rename
             )

         If OutNameNoExt not contains fruit.combo AND all dummy files have been checked
             {
             StringReplace %fruit% with %fruit%.nodessert
             )
         }
    ; proceed with next selected file
    }
4

1 に答える 1

1

条件3を内側のループの外に置くとうまくいくようです

于 2013-02-28T17:13:10.823 に答える