1

1 つのスクリプトで複数のコンピューターにコマンドを発行して、分散性の高いワークロードを分割したいと考えています。ワークロードを分散するために、タスク ラベルの半分を 1 つのファイルに入れ、タスクの半分を別のファイルに入れ、Google ドライブを使用してコンピューターに配布します (そのため、別のファイル名が必要です)。C:\googledrive\task1.txt と C:\googledrive\task2.txt

autohotkey コマンドは次のようになります。

loop, read, c:\googledrive\task*.txt

しかし、task1.txt を読み取る代わりに、"task*.txt" をリテラル ファイル名として読み取ろうとして失敗し、ループを終了するように見えます。

アイデア?ありがとう。

OK、すべてが管理者権限で実行されていることを確認し(存在する)、ファイルが存在することを確認し(存在する)、ファイルパスにタイプミスがないことを確認しました(すべてが適切です)。まだ実際にファイルを読みません。

ファイル名の元の投稿部分に含めなかったビットが 1 つありますが、実際には変数であるため、ループ コマンドは実際には次のようになります。

 loop, read, c:\googledrive\%task%*.txt

そのビットは取るに足らないものだと思っただけです。

コンピューターごとに異なるスクリプトを保存すると、ワイルドカードを実際のビットに置き換えることができ、機能します。

だから...ファイル内のコンピューターの名前で各ファイルに名前を付け、コマンドを次のように変更します。

loop, read, c:\googledrive\%task%%A_ComputerName%.txt
4

1 に答える 1

1

私はこのようにします...

Loop, C:\Temp\Source\*.txt ; Lists the next file as A_LoopFileName
{
    Loop, read, C:\Temp\Source\%A_LoopFileName% ; process current file
    {
        IfInString, A_LoopReadLine, abc
        {
        .......
        }
    }
}
于 2013-03-20T20:38:05.510 に答える