質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

4回答

49632閲覧

ショートカットをコピーするbatファイルを作りたいです。

churi_yuzuki

総合スコア32

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2016/12/02 05:19

testと言うフォルダの中に、aaa.exeというファイルと、そのショートカット(aaa.exe - ショートカット)が入っています。

これをCドライブ直下のbbbというフォルダにコピーするbatファイルを作成しております。

XCOPY test\aaa.exe C:\bbb\ XCOPY test\aaa.exe - ショートカット C:\bbb\

batファイルに上記のように記述したのですが、exeのみがコピーされて、ショートカットはコピーされませんでした。

どのように変えたら上手くコピーされるのでしょうか、ご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

Windowsのショートカットは .lnkという拡張子を持っています。
以下のようにしてください。

CMD

1XCOPY "test\aaa.exe" "C:\bbb\" 2XCOPY "test\aaa.exe - ショートカット.lnk" "C:\bbb\"

ただし、ほかの人の回答にもありますが、test\aaa.exe - ショートカット.lnk は、test\aaa.exeのショートカットファイルです。
このようにC:\bbb\にコピーしても、C:\bbb\aaa.exe - ショートカット.lnktest\aaa.exeのショートカットファイルになります。

コメントを受けて追記
COMオブジェクトのWscript.Shellを使用するのが一般的です。
以下で、test\aaa.exeC:\bbb\aaa.exeとしてコピー後、Powershellをコマンドラインから起動しC:\bbb\aaa.exeへのショートカットをC:\bbb\aaa.exe - ショートカット.lnkとして作成します

CMD

1XCOPY "test\aaa.exe" "C:\bbb\" 2powershell -Command "$wsh=New-Object -ComObject Wscript.Shell;$sc=$wsh.CreateShortCut('C:\bbb\aaa.exe - ショートカット.lnk'); $sc.TargetPath='C:\bbb\aaa.exe'; $sc.save()"

投稿2016/12/05 01:37

編集2016/12/05 02:36
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

churi_yuzuki

2016/12/05 01:48

ショートカットのコピーが出来ました、ありがとうございます! でも確かに参照先が元のファイルでした。。。 bbb\aaa.exeを作成した上で、bbb\aaa.exeのショートカットを作成する方法はあるのでしょうか。
Y.H.

2016/12/05 02:37

バッチファイルで1行でショートカットファイルを作成するコードを追加しました。
churi_yuzuki

2016/12/05 02:44

ご丁寧にありがとうございます! この方法でも出来ました! 色んな方法があるのですね...勉強します。 一番最初に実現できたのでベストアンサーにさせて頂きます!
guest

0

ショートカットの名前にスペースがあるからですね。

XCOPY "test\aaa.exe - ショートカット" C:\bbb\

これでいいでしょう。
ただ、bbbにできたショートカットをクリックしたらtestのほうが実行されます。
プロパティーを見てもらえるとわかります。
ショートカットはbbbの方で作成されることですね。

投稿2016/12/02 05:29

maiko0318

総合スコア876

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

churi_yuzuki

2016/12/05 00:49

遅れてしまい申し訳ありません。 ”で囲んだのですが出来ませんでした。 ちなみに直接bbbの方にショートカットを作ることなどは可能なのですか?
guest

0

ショートカットを作る、には、単純なバッチファイルでは無理です。
Windows API を呼び出さないといけませんので、最低でも Windows Script Host の助けが要ります。(PowerShell のコマンドレットにもないので、結局 WSH を使うのが一番手軽)
google 先生で「ショートカット バッチファイル 作成」などとやればいくつか参考になるサイトが出てきますね。

投稿2016/12/05 01:53

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

churi_yuzuki

2016/12/05 02:38

教えてくださったサイトを参考に、vbsファイルを作成し、一緒にbbbフォルダにコピーした後vbsを実行することでやりたいことを実現できました、ありがとうございました!
guest

0

パスを「"」で囲ってみてください。
スペースが含まれると別々の引数として処理されます。

BAT

1XCOPY ”test\aaa.exe” "C:\bbb\" 2XCOPY ”test\aaa.exe - ショートカット” "C:\bbb\"

投稿2016/12/02 05:28

himakuma

総合スコア952

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

churi_yuzuki

2016/12/05 00:50

遅れてしまい申し訳ありません。 ”で囲んでも出来ませんでした。 何故でしょうか。。
himakuma

2016/12/05 01:27

できないとは具体的にどのような状態ですか?
churi_yuzuki

2016/12/05 01:37 編集

XCOPY ”test\aaa.exe” "C:\bbb\" XCOPY ”test\aaa.exe - ショートカット” "C:\bbb\" のように記述したのですが、ショートカットのみコピーされませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問