- ベストアンサー
バッチファイルでクリップボードの文字を使う
バッチファイルにて フォルダを作成し、ファオルダの名前にクリップボードにコピーされている文字を使いたいのですが、お分かりの方、教えてください。お願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
DOSコマンドではクリップボードの内容を取り込むコマンドが無いので 標準のままでは、バッチ処理は不可能です クリップボードの操作が可能な外部プログラムが必要になります ということで、VBスクリプトで同様の動作を実現できるものを http://www.whitire.com/vbs/tips0170.html http://vbscript.infopos.net/p/000035.html 上記サイトのサンプルを合体させて ------ Option Explicit On Error Resume Next Dim objFS Dim objIE Dim strCbData Dim str_path Dim Fname1 Set objFS = CreateObject("Scripting.FileSystemObject") Set objIE = CreateObject("InternetExplorer.Application") If Err.Number = 0 Then objIE.Navigate("about:blank") strCbData = objIE.document.parentwindow.clipboardData.GetData("text") Fname1 = ".\" & strCbData str_path = objFS.CreateFolder(Fname1) MsgBox str_path objIE.Quit Else WScript.Echo "エラー:" & Err.Description End If Set objIE = Nothing ------ こんな感じで、一応動きますが 単純に組み合わせただけなので、クリップボードに文字列以外のデータやファイル名に利用できない文字列などのエラー処理はされていません
その他の回答 (5)
- web2525
- ベストアンサー率42% (1219/2850)
それではその他の方法 少々強引な処理になりますが ************ dim Txtfile dim WShell Txtfile = "C:\Users\ユーザ名\Desktop" ’ユーザ名をご自身のユーザ名に変更 Set WShell = WScript.CreateObject("WScript.Shell") WShell.Run "explorer """ & Txtfile & """" WScript.Sleep(2000) WShell.SendKeys "+^{F10}" 'メニュー画面表示 WScript.Sleep(200) WShell.SendKeys "X" '新規作成 WScript.Sleep(200) WShell.SendKeys "F" 'フォルダ WScript.Sleep(3000) WShell.SendKeys "^V" '貼付け WScript.Sleep(1000) WShell.SendKeys "{ENTER}" '決定 WScript.Sleep(500) WShell.SendKeys "%{F4}" '強制終了 ************ Explorer.exeでディスクトップを開く あとはショートカットキーの操作をSendKeysで実行 http://www.accessclub.jp/samplefile/help/help_187_2.htm 環境によってWScript.Sleepのタイムを調整しないと正しく実行されない可能性があります (基本的に長くすればするほど確実に動作しますが、その分処理に時間がかかります) その他の方法としては エクセルでフォルダ作成の自動実行マクロを作成し、VBSから非表示で呼び出す方法もあります (この場合は処理速度も早く、処理が画面上に表示されないが、エクセルがないと実行できない)
お礼
何度も回答ありがとうございました。
- web2525
- ベストアンサー率42% (1219/2850)
>実行時に”クリップボードへのアクセスを許可しますか”というメッセージが出るの ですが、これを出ないように出来ないのでしょうか? これを出さないようにするにはIE⇒ツール⇒インターネットオプションのセキュリティ設定でスクリプト処理の無条件許可が必要になるので、セキュリティ上お薦めできません
お礼
回答ありがとうございます。 batファイルだと、出ないのに、色々違いがあるのですね。
- web2525
- ベストアンサー率42% (1219/2850)
>大元の質問にあるファルダを作成することを言っています スクリプトを実行すればフォルダが作られるはずですが、出来ていませんか? VBでもクリップボードの内容取得はできないので、一部IEの機能を利用しています スクリプト実行時にIEから【スクリプトを実行しますか】のメッセージは出ていませんでしたか? メッセージが出ていないようなら、スクリプトがブロックされている可能性があるため、IEセキュリティ設定とセキュリティソフトの設定を変更する必要があります
お礼
回答ありがとうございます。 フォルダはちゃんと出来ていました。最初、デスクトップで他のアイコンと紛れて分かりませんでした。 実行時に”クリップボードへのアクセスを許可しますか”というメッセージが出るのですが、これを出ないように出来ないのでしょうか?
- web2525
- ベストアンサー率42% (1219/2850)
>フォルダはどうやって作るのでしょうか?拡張子がbatのバッチファイルしか知らないので フォルダ? 多分VBスクリプトファイルの事かと推測して 通常のバッチファイルと同様にメモ帳などに貼り付け、拡張子vbsで保存 実行手順はバッチファイルと同じ ちなみに大元の質問内容ですが >フォルダを作成し、ファオルダの名前にクリップボードにコピーされている文字を使いたい この操作自体、新しいフォルダーの作成先で 右クリック>新規作成>フォルダ>反転している名前の上で右クリック>貼り付け とマウス操作のみ5回クリックするだけで終了しますが、バッチ処理する必要性が有るのでしょうか?
お礼
回答ありがとうございます。 >フォルダ? >多分VBスクリプトファイルの事かと推測して こうではなくて大元の質問にあるファルダを作成することを言っています。 >この操作自体、新しいフォルダーの作成先で 右クリック>新規作成>フォルダ>反転している名前の上で右クリック>貼り付け とマウス操作のみ5回クリックするだけで終了しますが、バッチ処理する必要性が有るのでしょうか? マウスを5回操作せずに1回でやりたいのです。 ですからバッチファイルでフォルダを作成したくて、そのフォルダ名はクリップボードから持ってきたいのです。
- yukitakao
- ベストアンサー率44% (16/36)
ググってみましょう。 参考サイトとかいっぱいひっかかりますよ
お礼
回答ありがとうございます。 残念ながら参考サイトを見ても、良くわからないので、質問に対する回答を具体的にお願いします。
お礼
回答ありがとうございます。 これでクリップボードの情報を取得出来ることは確認できましたが、フォルダはどうやって作るのでしょうか?拡張子がbatのバッチファイルしか知らないので、よろしくお願いいたします。