2017-02-09 21 views
0

私は再帰検索に問題がありますが、最初のいくつかの重要なデータ:再帰検索(NSIS)

  • 私は私が$ TEMPにコピーするSQLファイルでいっぱいいくつかのディレクトリを持っている
  • 私は、現時点ではこのv2.1.0.0
  • ように見えるから読みたい
  • ディレクトリは、v2.7.0.3にディレクトリv2.5.0.0は、フォルダを「する必要がいけない
  • を読み取る必要が次のようにv2.5.0.3はv2.5.0.0に従うことができます
  • 私は現在、$ {foreachの}

    の問題を解決しようとしている私は(javaの前に)この言語に新たなんだ、これが私の最初のタスク

あるLogicLib

  • を使用しています
    !macro GetSQLVersionFiles first second third fourth 
    SetOutPath $TEMP 
    ${ForEach} ${first} 0 9 + 1 
        ${ForEach} ${second} 0 9 + 1 
         ${ForEach} ${third} 0 9 + 1 
          ${ForEach} ${fourth} 0 9 + 1 
          IfFileExists "scripte\v${first}.${second}.${third}.${fourth}" 0 +2 
          File "scripte\v${first}.${second}.${third}.${fourth}\*.sql" 
          ${next} 
         ${next} 
        ${next} 
    ${next} 
    !macroend 
    

    はので、私の考えは1スタートディレクトリを置くことが可能な4つのパラメータを持つマクロを持って、それが実行可能な、後のために作るために、だった、所望の「2 5 0 0」と言うと、それはすべてのフォルダとプットを反復処理見つかった.sqlファイルを$ TEMPディレクトリにコピーします

    既に{}

  • せず、すべてのパラメータを参照のうえ

    • 書き込み「$は{最初} $ {最初} 9 + 1(これは最初から9まで反復と思っ)

    試み私が手にエラーが

    !insertmacro: _ForEach 
    Usage: StrCpy $(user_var: output) str [maxlen] [startoffset] 
    Error in macro _ForEach on macroline 3 
    Error in macro GetSQLVersionFiles on macroline 2 
    Error in script "\\NAMEOFMYSCRIPT -- aborting creation process 
    

    次LogicLibの_ForEachの3行目は

    StrCpy "${_v}" "${_f}"        ; Assign the initial value 
    
    012です

    ご協力いただきありがとうございます。

    答えて

    2

    定義と変数を混合しています。

    定義は!defineで作成され、${name}でアクセスされます。

    変数はVarで作成され、$nameでアクセスされます。あなたが使うことができるいくつかの組み込み変数もあります:$ 0 .. $ 9。

    変数は実行時に変更できますが、定義することはできません。

    File命令を使用してエンドユーザーのコンピュータ上のファイルをコピーできない場合、実行時にファイルをコピーする場合は、CopyFiles命令を使用する必要があります。一方、インストーラからファイルを抽出したい場合は(質問に基づいてどちらを指定するかはわかりません)、File命令を使用する必要がありますが、${For}は実行時の概念であるため使用できません。 !systemexecute a batch file that builds a list of files in a .nshの場合は!includeとなります。

    +0

    ありがとうございます! 私は2番目に、インストーラからファイルを抽出したかったのです。 私はバッチを調べ始めると思います、ありがとうございます! –