none
; が連続して2つ入っているディレクトリ内に置いたbatファイルが動きません。 RRS feed

  • 質問

  • Dosコマンドの質問コーナーがありませんでしたので、こちらで失礼させていただきます。

    :

    copy /Y C:\test";;"\test.txt C:\test";;"\"test - コピー.txt"
    pause

    :

    と書いたbatファイルを

    C:\やデスクトップに置いた場合は、 test - コピー.txt が作られるのですが、
    C:\test;;に置いた場合は、すぐに窓が閉じてしまい、pauseも効きません

    C:\test;;の中にbatファイルを置いて使えるようにする方法は無いものでしょうか?
    どなたかご存じでしたら、ヒントだけでも教えて下さい m(_ _)m

    ちなみに、 C:\test; や C:\;test; のように、 ; が連続していなければ
    そのディレクトリ内にbatファイルを置いてもコピーできました。


    補足です:

    windows8.1 64bitで上のコマンドを試していたのですが、

    windows7 32bit上でも、 上の症状となってしまうようです TT

    • 編集済み koujichiu 2014年11月10日 6:18
    2014年11月10日 5:07

回答

  • こんにちは、

    PowerShellで良ければ、

    copy  "C:\test;;\test.txt" "C:\test;;\test - コピー.txt"

    と書いたスクリプトをcopytest.ps1とかに書いてあげて、

    セミコロンをバッククォートでエスケープして実行すると良さそうでした。

    C:\test`;`;\copytest.ps1

    ご参考まで。

    • 回答としてマーク koujichiu 2014年11月10日 12:06
    2014年11月10日 7:50

すべての返信

  • 手元の環境 (Windows 8.1) では以下でコピーできるようですが、何かエラー等出るようであればその内容など記載していただければ情報が集まりやすいかと思います。
    copy /Y "C:\test;;\test.txt" "C:\test;;\test - コピー.txt"

    MCITP(Database Developer/Database Administrator)

    2014年11月10日 5:37
  • nagino さん、 こんにちは。 ご回答ありがとうございます。

    コードをコピペさせていただき、batファイルをC:\test;;の中に入れて

    そこでダブルクリックをしてみたのですが、

    やはり私のパソコン(Windows8.1 64bit)では、pauseコマンドも効かず

    窓が瞬間的に開いてすぐに閉じてしまいました。

    自分でもpathに登録 dir1;dir2;...;C:\test";;"や C:\test^;^; などをしたり

    ディレクトリ名の中の;;を ^ や " や ' や \ などを組み合わせていろいろと括ってみたり

    コードの最初にCD C:\ 等々をしてみたのですが、

    もしかすると C:\test;;の中にある.batファイル自体を読みに行けない

    (ディレクトリを辿れずに、command.comと関連付けできない感じ?)

    のような気もしています。

    ●追伸です。

    試しに C:\test;;の下に、

    pauseとだけ書いたbatファイルを置いてダブルクリックしてみたのですが、

    瞬間的に窓が立ちあがって「指定されたパスが見つかりません」と出ていました。



    • 編集済み koujichiu 2014年11月10日 6:25
    2014年11月10日 6:13
  • 自己解決というか、理由がなんとなくわかりました。

    ウィンドウズではファイルやディレクトリ名として使える文字で命名したディレクトリに置いても、

    Dosからはたどっていけないのが原因なのかもしれません。

    // [NT] バッチファイルやコマンドファイルを実行できない
    // http://support.microsoft.com/kb/171651/ja

    .bat ファイルや .cmd ファイルが置かれているディレクトリや、その親ディレクトリの名前に、以下の文字が含まれている場合に、この現象が発生します。
      @ & ^ ( )

    なお、アットマーク ( @ ) を含むディレクトリの場合、[スタート] メニューの [ファイル名を指定して実行] を使用しても、この現象は発生しません。

    ですので、ちがうスクリプトでコピー頑張ってみます!

    2014年11月10日 6:34
  • こんにちは、

    PowerShellで良ければ、

    copy  "C:\test;;\test.txt" "C:\test;;\test - コピー.txt"

    と書いたスクリプトをcopytest.ps1とかに書いてあげて、

    セミコロンをバッククォートでエスケープして実行すると良さそうでした。

    C:\test`;`;\copytest.ps1

    ご参考まで。

    • 回答としてマーク koujichiu 2014年11月10日 12:06
    2014年11月10日 7:50
  • minminnana_profさん、 ご回答ありがとうございました m(_ _)m

    powerShellを管理者モードで立ち上げて

    Set-ExecutionPolicy Unrestricted

    とした後に、

    C:\test;;の下に入れましたtest.ps1を右クリック → powerShellから実行する

    で、無事にコピーができるようになりました。

    copyのコマンドも""でくくれば良いだけのようですので、

    今後は便利に .ps1ファイル を使っていこうと思います。

    有難う御座いました。

    2014年11月10日 12:04