◀一般トップへ
  • 2079 1.3.2.2
    • 2080 RE: 1.3.2.2
      • 2081 RE2: 1.3.2.2
        • 2083 RE3: 1.3.2.2
          • 2085 RE4: 1.3.2.2
      • 2082 RE2: 1.3.2.2
  • [2079] 1.3.2.2 げんた 2002年07月04日 01:56

    とりあえずDiffの起動部分だけなおしました.
    http://sakura-editor.sourceforge.net/snapshot/sakura_2002-07-04.zip
    • [2080] RE: 1.3.2.2 やざき 2002年07月04日 12:15

      >タイトル: RE: 1.3.2.2
      >発言者: げんた
      >とりあえずDiffの起動部分だけなおしました.
      >http://sakura-editor.sourceforge.net/snapshot/sakura_2002-07-04.zip

      Win2000では、
      cmd.exe /C ""C:\Program Files\sakura\diff.exe""
      のようにしないと、半角スペースが入ったパスをうまく処理できないみたい。
      なので、まだdiffが使えない。
      他のOSはどう?
      • [2081] RE2: 1.3.2.2 やざき 2002年07月04日 12:23


        結局Win2000では、こんな感じで動くみたいです。

        >cmd.exe /C ""C:\Program Files\sakura\diff.exe" -iwbBt "FileA.txt" "FileB.txt""
        • [2083] RE3: 1.3.2.2 やざき 2002年07月04日 13:07


          すいさん、Thanx!

          >結局Win2000では、こんな感じで動くみたいです。
          >
          >>cmd.exe /C ""C:\Program Files\sakura\diff.exe" -iwbBt "FileA.txt" "FileB.txt""

          Win95
          command.com /C "C:\Program Files\sakura\diff.exe" -iwbBt "FileA.txt" "FileB.txt"

          で動くということかしらん。

          cmd.exeと、command.comで、仕様が違うってことなんですかね。

          ってことは、CEditView_Diff.cpp(240あたり)

          //コマンドライン文字列作成(MAX:1024)
          wsprintf( cmdline, "%s /C \"\"%s\\%s\" %s \"%s\" \"%s\"\"",
          ( cOsVer.IsWin32NT() ? "cmd.exe" : "command.com" ),
          szExeFolder, //sakura.exeパス
          "diff.exe", //diff.exe
          szOption, //diffオプション
          ( nFlgFile12 ? pszFile2 : pszFile1 ),
          ( nFlgFile12 ? pszFile1 : pszFile2 )
          );
          じゃなく、
          if (cOsVer.IsWin32NT()){
          wsprintf( cmdline, "cmd.exe /C \"\"%s\\%s\" %s \"%s\" \"%s\"\"",
          szExeFolder, //sakura.exeパス
          "diff.exe", //diff.exe
          szOption, //diffオプション
          ( nFlgFile12 ? pszFile2 : pszFile1 ),
          ( nFlgFile12 ? pszFile1 : pszFile2 )
          );
          }
          else{
          wsprintf( cmdline, "command.com /C \"%s\\%s\" %s \"%s\" \"%s\"",
          szExeFolder, //sakura.exeパス
          "diff.exe", //diff.exe
          szOption, //diffオプション
          ( nFlgFile12 ? pszFile2 : pszFile1 ),
          ( nFlgFile12 ? pszFile1 : pszFile2 )
          );
          }
          かな?
          • [2085] RE4: 1.3.2.2 すい 2002年07月04日 20:11

            >Win95
            >command.com /C "C:\Program Files\sakura\diff.exe" -iwbBt "FileA.txt" "FileB.txt"
            >で動くということかしらん。

            はい、↑その記述で動きました。


            意味の無いオマケ:以下のようなパターンで、全て、同じコマンド文字列として解釈&実行されます。

            1>command /c "C:\Program Files\sakura\diff.exe"
            2>command /c C:\"Program Files"\sakura\diff.exe
            3>command /c C:\Progra"m F"iles\sakura\diff.exe
            4>command /c C:\Program" "Files\sakura\diff.exe
            5>co""mmand /c C:\Pro"g"ram" "Fi""les\sakura\diff.exe

            んで、↑5を応用(?)して、↓こんな暗号化(爆)も出来たりします。 :-) ...意味無さげ...

            6>com""mand /c ""C:""\""""P"""r"""o""g"""r"""a""m" "F""""i""l"""""e""s""\"""""s""a""""k""u""""r""a""\"""d""i""f""""f""."""e""x""e""

            # 例外として、ドライブレター部(C:)のCと:の間には ""(空文字列)を入れることは出来ません。

            って言ったところで、こんな事やる方は いらっしゃいませんわね。 :-P
      • [2082] RE2: 1.3.2.2 すい 2002年07月04日 12:32

        >Win2000では、
        >cmd.exe /C ""C:\Program Files\sakura\diff.exe""
        >のようにしないと、半角スペースが入ったパスをうまく処理できないみたい。
        >なので、まだdiffが使えない。
        >他のOSはどう?

        Win95
        あくまで "" で括られた範囲が「ひとかたまりの文字列」と認識されます。
        ""C:\Program Files\sakura\diff.exe"" だと、
        ・パラメータ1:""(空文字列) + C:\Program
        ・パラメータ2:Files\sakura\diff.exe + ""(空文字列)
        として扱われます。
        ----------------------------------------
        ----------
        >command /c "C:\Program Files\sakura\diff.exe"
        Usage: C:\PROGRA~1\SAKURA\DIFF.EXE [options] from-file to-file
        Options:
        [-abBcdefhHilnNpPqrstTuvwy] [-C lines] [-D name] [-F regexp]
               チョキチョキチョキ
                "(V)..(V)"
                 ミ( 略 )ミ
        [--width=columns]

        >command /c ""C:\Program Files\sakura\diff.exe""
        コマンドまたはファイル名が違います.

        >copy C:\Windows\Calc.exe C:\Program.exe    ← C:\ に Program.exe という名前で電卓をコピー
        1 個のファイルをコピーしました.

        >command /c ""C:\Program Files\sakura\diff.exe"" ← 電卓が起動する。※1

        >
        ----------------------------------------
        ----------
        ※1:C:\ に Program.exe という名前でコピーした電卓に対して
           Files\sakura\diff.exe というオプションパラメータを付けて起動する。