• 締切済み
  • 困ってます

シンボリックリンク作成のバッチファイル

親フォルダーに、aフォルダーとbフォルダーが入っています。 aフォルダー配下には、xフォルダーがあり、その中には複数のテキストファイルが入っています。 parent\a\x\test.txt parent\b\ 以下の様なバッチファイルを「送る」に登録しました。 @echo off rem 選択ディレクトリ配下のxディレクトリに移動 cd /D %1\x\ rem カレントディレクトリにあるすべてのファイルを、bディレクトリにコピー for %%i in (*.*) do ( copy "%%i" "..\..\b\" ) これにより、aフォルダーを選択してバッチファイルを実行すると、xフォルダー配下のテキストファイルがbフォルダーの中にコピーされることは確認しました。 ここで、コピーではなく、シンボリックリンク(mklink)を作成したいのですが、引数をどのように設定すればよいでしょうか。いろいろ試しましたがうまくいきませんでした。 ご教示よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1052
  • ありがとう数1

みんなの回答

  • 回答No.1
  • kteds
  • ベストアンサー率41% (1772/4226)

何も関係ないコピーの事例が書いてあるので、何を行ないたいのか、かえって解りにくいです。 「xフォルダ-をbフォルダにシンボリックさせたい」ということであれば 下記のようにディレクトリ シンボリックリンクを作成すればいいです。 mklink /D [新しいフォルダ名] [リンク先(実体)のフォルダ名] 今回の場合は、下記のようになります。(b、x はフルpathで指定してください) mklink /D b x --- なお、mklinkのヘルプを参照すれば、すぐに解るはずです。 添付画像参照。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。 補足入力をしますので、よろしくお願いします。

質問者からの補足

親フォルダーは、その都度変わります。そのため、相対パスで指定しなければならないと思うのですが、それで悩んでいます。 ご教示よろしくお願いします。

関連するQ&A

  • シンボリックリンクが開けない

    親フォルダーに、aフォルダーとbフォルダーが入っています。 aフォルダー配下には、xフォルダーがあり、その中には複数のテキストファイルが入っています。 parent\a\x\test.txt parent\b\ 以下の様なバッチファイルを「送る」に登録しました。 @echo off cd /D %~1\x\ for %%i in (*.*) do ( mklink "..\..\b\%%~nxi" "%%i" ) これにより、aフォルダーを選択して「送る」からバッチファイルを実行すると、bフォルダー配下に、xフォルダー配下のすべてのファイルのシンボリックファイルが貼られました。(シンボリックファイルは作成されました。) しかし、シンボリックファイルを開こうとしても、以下のようなエラーメッセージが表示されて、開けません。 エラーコード 1921 ファイル名を解決できません。 どこを修正すればよいでしょうか。ご教示よろしくお願いします。

  • シンボリックリンクがある場合のスクリプト

    シェルスクリプトに関して教えてください。 ディレクトリを指定の場所にコピーしたいのですが、 コピーしたいディレクトリ配下に一部シンボリックリンクになっているファイルやディレクトリがあり、その部分のコピーがcpコマンドで出来ません。 シンボリックリンクになっているものは10個ほどと多くなく、そのリンク先もそれぞれわかっている為、 リストを書き出してそのファイル(ディレクトリ)はそれぞれ別の場所にコピーする ようなことは出来るのでしょうか? 日によってコピー元にシンボリックリンクのファイルがなくコピーしない時もあるので、 コピーするディレクトリ内にシンボリックがあれば、シンボリックリンク先にそのファイルをコピーするような処理です。 簡単に下記にイメージを書きます。 (1)home直下にcopy-motoディレクトリがあった場合、/usr/copy-sakiにコピーする cd /home if [ -d copy-moto ] ; then cp -pr copy-moto/* /usr/copy-saki echo "copy-sakiにコピーしました" fi ここはこんな感じでスクリプトを書きました。 更に(2)の事を追加したいです。 (2)copy-moto配下にhoge1やhoge2,hoge3と多くのディレクトリやファイルがある。  その中でhoge1やhoge2の下にSymbolicXXやSymbolicYYがあった場合、そのファイルやディレクトリはシンボリックリンク先にコピーしたい。  リストで以下のようにシンボリックになっているものは把握している。  そのリスト内にあるものは/usr/copy-sakiではなくhome/Symbolic_link~にコピーしたい的なことをしたいと思っています。    /home/copy-moto/hoge1/SymbolicXX→home/Symbolic_link/SymbolicXX  /home/copy-moto/hoge1/SymbolicYY→home/Symbolic_link/SymbolicYY  /home/copy-moto/hoge2/SymbolicZZ→home/Symbolic_link_AA/SymbolicZZ  /home/copy-moto/hoge2/SymbolicQQ→home/Symbolic_link_AA/SymbolicQQ   この例外処理?のような記載などどのようにスクリプトをかけばいいかわからず… わかる方いればご教授ください。

  • windowsバッチファイルで実行フォルダ移動

    お世話になります。王次郎です。 windows7 バッチファイルで、引数で渡されたファイルまたはフォルダの ディレクトリにカレントディレクトリを変更したいです。 方法を教えてください。 ・ 引数(%1%)が無いときは、カレントディレクトリはバッチファイルのあるディレクトリのままにします ・ 引数(%1%)がフォルダのときは、カレントディレクトリをその引数のフォルダにします CD %1% ・ 引数(%1%)がファイルのときは、そのファイルの置かれているディレクトリを抽出して その抽出したディレクトリに移動します よろしくお願いします。

  • シェルスクリプトだと動かない [ -L fileS ] && echo "シンボリックリンクです"

    コマンドライン上で カレントディレクトリにある fileS がシンボリックリンクであるか調べる事ができるか、学習しております。コマンドライン上で [ -L fileS ] && echo "シンボリックリンクです" と打つと、動作する事を確認しました。 しかし、シェルスクリプトで(slink.sh) ======================= #!/bin/sh [ -L fileS ] && echo "シンボリックリンクです" ======================= と、同ディレクトリにスクリプトファイルを作成。 chmod ug+x slink.sh して ./slink.sh と打つと slink.sh: test: 引数が足りません。 と怒られます。 どこがどのように間違っているかわからないので ご教授いただけないでしょうか お願い致します。

  • XPバッチプログラムについて

    すいませんおしえてください windowsXPでバッチファイルを作成しています。 動作内容は↓の通りです。 (1)バッチファイルが置いてあるカレントディレクトリ配下にある複数のディレクトリから、ファイル名に「test」を含む.txtファイルを カレントディレクトリにコピーする。(これをカレントディレクトリ配下のディレクトリがなくなるまで繰り返す) ※簡単に言うと、1つ下のディレクトリからコピーしてくるということです。 (2)既にカレントディレクトリに同じ名前のファイルが存在する場合は自動的に連番して上書きしないようにコピーする。 今、(1)については下記の通り作成して動作確認しましたが、このままでは複数のディレクトリに同じファイル名が 存在する場合に上書きされてしまいます。 (2)についてなかなか上手くコーディングできないのですが↓のプログラムに追加すればよいものを教えていただけますでしょうか? もしくは、全体的に間違っていれば、その部分もご指摘お願い致します。 @echo off for /d %%d in (*) do ( if exist %%d\*test*.txt copy %%d\*test*.txt *test*.txt ) 以上、よろしくお願い致します。

  • こんなリネイムのバッチファイル無理かも知れませんが・・

    こんなリネイムのバッチファイル無理かも知れませんが・・ 以下のような階層構造でファイルを保存しているんですが、すべてのテキストファイルに ファイルの更新日を追加するバッチファイルってできますか? いろいろ調べて作成しているんですが、どれもうまくいきません・・(;_:) ご存知の方何とぞご教授を<m(__)m> ・構造 以下の2パターン  1.親フォルダ-月フォルダー日フォルダーテキストファイル  2.親フォルダ-月フォルダー日フォルダーn回目フォルダーテキストファイル 例)1.の場合 D:\parent\1月\9日\goo.txt 2.の場合 D:\parent\1月\9日\2回目\goo.txt バッチファイルの結果:全てのファイルをgoo.txt→20100502goo.txtにしたい             (20100502→ファイル更新日) 何とぞお願い致します。

  • バッチファイル、ドラッグ&ドロップしたファイルだけ

    [ファイルを名前を変えて複数個コピーを作成、を一括で] http://okwave.jp/qa/q7808481.html という質問をしていたのですが、 「wordのファイルを、ファイル名を変えて複数コピーするためのフリーソフ 」 http://okwave.jp/qa/q5651889.html という質問を見つけ、参考にしてバッチを編集したのですが、使い勝手が悪いです。 copy *.* 1.* copy *.* 2.* copy *.* 3.* copy *.* 4.* copy *.* 5.* copy *.* 6.* copy *.* 7.* copy *.* 8.* というバッチを作ったのですが、 このことにより、コピーを複数作成したいファイルをバッチファイルのアイコンにドラッグ&ドロップすることにより、カレントディレクトリにコピーが8個作成できるようになったのですが、 ドラッグ&ドロップしたファイル以外に、同一ディレクトリにあるファイルすべてのファイルのコピーが作成されてしまいます。 コピーするのをドラッグ&ドロップしたものだけにする方法があれば教えてください。

  • windows7 相対パスによるシンボリックリンク

    windows 7上で、外付けHDDに相対パスによるシンボリックリンクを張りたいのですが、できません。 D:\Data0 D:\Src という二つのフォルダがあったとします。Srcフォルダ内に、Data1というシンボリックリンクを作り、一つ上のData0に張りたいのですが、うまくできません。 % mklink /d "Data1" "../Data0" をしたところ、リンクは生成されるのですが、リンクフォルダをダブルクリックすると 「D:\Src\Data1にアクセスできません。ファイル名、ディレクトリ名、またはボリュームラベルの構文が間違っています」 というエラーメッセージが出て、アクセスできません。

  • 特定のサブフォルダのテキストファイルだけをリネイムするバッチファイル

    特定のサブフォルダのテキストファイルだけをリネイムするバッチファイル 以下のような階層構造でファイルを保存していますが、2回目フォルダのテキストファイルのみを リネイムするバッチファイルは作成可能でしょうか? 仕事で必要なのですが、プログラム的なことはさっぱりわからないので困っております。 ご存じの方がいらっしゃいましたら、何とぞよろしくお願いいたします。 ・構造 以下の2パターン  1.親フォルダ-月フォルダー日フォルダーテキストファイル  2.親フォルダ-月フォルダー日フォルダーn回目フォルダーテキストファイル 例)1.の場合 D:\parent\1月\9日\20100109goo.txt 2.の場合 D:\parent\1月\9日\2回目\20100109goo.txt パターン1、2、ともに親フォルダ内に複数あり バッチファイルの結果:2回目フォルダのテキストファイルのみ            goo.txt→20100109goo.second.txtにしたい

  • 指定時間で自動起動のバッチファイルを作りたい

    指定時間で自動起動のバッチファイルを作りたいです。コマンドプロンプトです。 以下のバッチファイル2つを作りました。ファイルを起動しましたが定時になっても動きませんでした。 PC側はBIOS設定 (タイマー設定) はしておりました。 おそらくこちらに問題があると思いますので 詳しい方、御教示お願い致します。 ファイル1 (copy.bat設定用) REM copy.batを毎日00時に起動する pause pause cd c:\AAA at 00:00 /every:M,T,W,Th,F,S,Su c:\AAA\ copy.bat pause ファイル2 (copy.bat) REM (D)BBBフォルダーの全ての.###ファイルをCCCフォルダーにコピーする pause pause cd c:\Users\***\Desktop\BBB copy /y c:\Users\***\Desktop\BBB\*.### c:\CCC pause