• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Desktopのファイルを別フォルダにコピーしたい)

Desktopのファイルを別フォルダにコピーしたい

NotFound404の回答

回答No.2

v=createobject("wscript.shell").specialfolders("desktop") msgbox v では?

yukimina
質問者

お礼

コメントを有難うございます。

yukimina
質問者

補足

desktopのパスを取得して、質問の中で記したScriptの中に組み込みたいのですが、それがなかなかうまく実行しないので苦慮してます。

関連するQ&A

  • vbsでZIPファイルを特定のフォルダへ。その1

    http://d.hatena.ne.jp/haradago/20150402/p1 を参考に VBSでZIPファイルを特定のフォルダへ解凍しようとしているところです。 以下の記述の意味がわからないので解説お願いします。 --------------------------------------------------- '解凍するZIPファイル DIR_SOURCE = "C:\Users\a\Desktop\aaa.zip" '解凍先 DIR_DEST = "C:\Users\a\Desktop\解凍先" '定数 Const FOF_SILENT = &H04 '進捗ダイアログを表示しない。 Const FOF_NOCONFIRMATION = &H10 '上書き確認ダイアログを表示しない([すべて上書き]と同じ)。 'オブジェクト生成 Set objShell = CreateObject("Shell.Application") Set FilesInZip = objShell.NameSpace(DIR_SOURCE).items Set objFolder = objShell.NameSpace(DIR_DEST) '解凍 If (Not objFolder Is Nothing) Then objFolder.CopyHere FilesInZip, FOF_NOCONFIRMATION + FOF_SILENT End If msgbox "解凍がおわったよ" ----------------------------------------------------------- 上記のVBSを実行すると デスクトップ上に ある aaa.zip が 解凍先 という名のフォルダのなかに 解凍されます。 「解凍がおわったよ」というメッセージも表示されます。 なぜ動くのかがわからないです。 ------------------------------- 'オブジェクト生成 Set objShell = CreateObject("Shell.Application") Set FilesInZip = objShell.NameSpace(DIR_SOURCE).items Set objFolder = objShell.NameSpace(DIR_DEST) ----------------------------------- の意味がわかりません。  オブジェクト メソッド プロパティ の意味はなんとなく程度です。 動物にたとえるならば、   犬・・・・オブジェクト   メソッド・・・・吠える、走る    プロパティ 犬の重さ 大きさ   という感じです。 Set objShell = CreateObject("Shell.Application") の意味なんですが、 ウィンドウズパソコンに入っているソフトを使うときによく出てくるんですが そうゆうもんだと 思っとけばいいんですかね?  たとえば  Set FilesInZip = objShell.NameSpace(DIR_SOURCE).items Set objFolder = objShell.NameSpace(DIR_DEST) この2行の意味ってなんでしょうか? google で NameSpace vbs で調べてはいるんですが、 さっぱりわからないです。 最終的には  解凍.vbs ってアイコンに 解凍したいzipファイルをドロップしたら、指定するフォルダへ 解凍ファイルを放り込むスクリプトを作ろうとしてます。 

  • VBS 任意の名前でzip内のファイルを解凍したい

    VBSを使ってzipファイルの解凍を行う際に、解凍ファイルを任意の名前にしたいです。 現在以下の内容のvbsでzipファイルを解凍しています。 --------------------------------------------------------------- zippath = "C:\新しいフォルダー\test.zip" savepath = "C:\新しいフォルダー" Set objShell = CreateObject("Shell.Application") Set FilesInZip = objShell.NameSpace(zippath).items Set objFolder = objShell.NameSpace(savepath) If (Not objFolder Is Nothing) Then objFolder.CopyHere FilesInZip, FOF_NOCONFIRMATION + FOF_SILENT End If --------------------------------------------------------------- 解凍自体は上手くいってるのですが、解凍したファイルの名前が統一されていない為、次の処理でスマートにファイルの指定ができません。 このファイル名を、 ・zipファイルと同じ名前(例えば「test.zip」なら「test.xlsx」など)にする。 ・任意の名前で解凍する。 ことは出来ないでしょうか。 ご回答よろしくお願いします

  • VBSでファイルやフォルダのコピー途中で止まる。

    VBSでファイルやフォルダのコピー途中で止まる。 以前に「コピー中にプログレスバーを表示させるには」http://okwave.jp/qa/q5990703.html ========================================== Const FOF_CREATEPROGRESSDLG = &H0& strTargetFolder = "C:\backup\" Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace(strTargetFolder) objFolder.CopyHere "D:*.*", FOF_CREATEPROGRESSDLG ========================================== で教えて頂きました上記スクリプトでコピーはできたのですが、普通では見えない保護されたシステムファイルも丸ごとコピーしようとする見たいで、途中で"System Volume Informationを作成または置き換えできません・・・"エラー表示がされて止まってしまいます。 このようなコピーできないファイルやフォルダを無視するか、指定して除外する方法はありませんでしょうか。 よろしくお願いいたします。

  • VBScriptでのフォルダ指定ダイアログについて

    VBSciptでの「フォルダ指定ダイアログ」について教えてください。 「フォルダ指定ダイアログ」を利用して、保存元のフォルダと保存先の フォルダを選択し、特定ファイル(*.jpg)のコピーをするツールを作っています。 下記のプログラムで、「フォルダ指定ダイアログ」が表示されるのは 確認できたのですが、選択したフォルダの階層をテキストフォームに 表示させる方法を教えてください。(書き込みできませんのエラーになります。) --------------------------------------------------------- Dim objShell Dim objFolder ' オブジェクトの生成 Set objShell = CreateObject("Shell.Application") ' フォルダ選択ダイアログを表示 Set objFolder = objShell.BrowseForFolder(0, "フォルダを選択してください。", 0) Set objShell = Nothing --------------------------------------------------------- 以上、宜しくお願い致します。

  • [WSH] ファイルのコピーができない

    こんにちは。 次のようなスクリプトでFTPフォルダにファイルをコピーしようとしたのですが、カレントフォルダにファイルがコピーされてしまうようです。 どうすれば、FTPフォルダにファイルをコピーできるのでしょうか? var objShell = WScript.CreateObject("Shell.Application"); var objFolder = objShell.NameSpace("ftp://user:password@sitename/directory/"); objFolder.CopyHere("C:\\WINNT\\win.ini"); WScript.Sleep(6000); ※下記のページを参考にさせていただき作成しました。http://homepage3.nifty.com/aya_js/wsh/wsh25.htm

  • VBScriptでのファイルコピー

    こんにちは いつもお世話になります。 現在、「ファイルの指定ダイアログ」で選択されたファイルの中身(ファイル名) と「フォルダ指定ダイアログ(参照先)」で選択されたフォルダ(サブフォルダ含む) 内のファイルの名前を比較して、一致しているファイルを「フォルダ指定ダイアログ (保存先)」にコピーし、一致しないファイル名を同じく「フォルダ指定ダイアログ (保存先)」に出力するというツールを作成しています。 以下を実行させても、ファイルのコピーも出力もされないのですが、教えていただけます でしょうか。 宜しくお願い致します。 ---------------------------------------------------------------------- <html><head> <script language="VBScript"> 'Call Window.ResizeTo(500,200) Set objFso = CreateObject("Scripting.FileSystemObject") 'テキストファイル吐き出し場所 Const LIST_FILE = "C:\Documents and Settings\All Users\デスクトップ\NonFile.txt" '色々宣言 Dim objFso Dim inFolderName Dim outFolderName Dim inFileName Dim objTxIn Dim ListFile Dim CurrentFileName '色々定数 Const TristateTrue = -1 Const TristateFalse = 0 Const TristateUseDefault = -2 Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8 '参照フォルダをテキストに表示 '------------------------------------------------------------ sub inFolder() Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder( _ 0, "フォルダを選択してください", 0, "ssfDeskTop") If objFolder Is nothing Then MsgBox("フォルダを選択されませんでした。") Else pathFolder = objFolder.Items().Item().Path ifd.value = vbCr & pathFolder Set objFolder = nothing End If End sub '保存先フォルダの選択 '------------------------------------------------------------ sub outFolder() Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder( _ 0, "フォルダを選択してください", 0, "ssfDeskTop") If objFolder Is nothing Then 'MsgBox("フォルダを選択されませんでした。") Else pathFolder = objFolder.Items().Item().Path ofd.value = vbCr & pathFolder Set objFolder = nothing End If End sub '------------------------------------------------------------ Sub btn_onClick 'ファイルの有無チェック txOut="" inFileName = inFile.Value outFolderName = ofd.value If objFso.FileExists(inFileName) = True Then Set ListFile = objFso.OpenTextFile(inFileName,ForReading,false,TristateTrue) 'ファイルが無いとき Else MsgBox("ファイルが選択されていません。") End If Call iFolder(inFolderName) MsgBox("完了") End Sub 'サブフォルダ内ファイル検査→有 コピー/無 テキスト出力 '------------------------------------------------------------ Sub iFolder(inFolderName) CurrentFileName="" 'フォルダオブジェクト取得 outFolderName = ofd.value If inFolderName ="" then inFolderName = ifd.value Set fsoFolder = objFso.GetFolder(inFolderName) On Error Resume Next CurrentFileName = ListFile.ReadLine For Each fsoFile In fsoFolder.Files If fsoFile.Name = CurrentFileName Then fsoFile.Copy outFolderName,CurrentFileName,false Else set NoFile = objFso.CreateTextFile(LIST_FILE,True) NoFile.WriteLine(CurrentFileName) NoFile.Close End If fsoFile.Close Set fsoFile = Nothing Next For Each fsoSubFolder In fsoFolder.SubFolders Call iFolder(fsoSubFolder) Next End Sub </script> </head>

  • エクセルのデータからフォルダを作成

    エクセル選択・読み込み→フォルダ作成先指定・処理 →作成した空のフォルダを表示 という手順のプログラムです。 コモンダイアログで選んだエクセルのデータを元に、 新しいフォルダを作成したいと思っています。 エクセルには番号(一列目)、氏名(二列目)などが入っており 一人分の情報が一行目に、二人目の情報が二行目・・・という風に一行ずつに入っています。 指定した作成先に、そのエクセルで読み込んだ人数分だけ 空のフォルダを作成し、なおかつ一列目に入っていた番号を フォルダ名にしたいのですが、どうすればいいでしょうか。 途中まで作ってみましたが後が続きません。 よろしくお願いします。 Private Const BIF_RETURNONLYFSDIRS As Long = &H1 Dim objShell As New Shell Dim objFolder As Folder Private Sub Command1_Click() Set objShell = New Shell Set objFolder = objShell.BrowseForFolder(Me.hWnd, "フォルダを選択してください", BIF_RETURNONLYFSDIRS) If objFolder Is Nothing Then MsgBox "ファイルを開く作業をキャンセルします" Else End If Set objShell = Nothing End Sub

  • vba pdfファイル順番に印刷

    セルC5から、下にファイル名が入っています。上から順に印刷したいのですが、下記だとvbaが動かないです。 Dim z As Object Dim i As Long Dim f, p As String Set z=CreateObject("WScript.Shell") p=Application.ActivePrinter For i=5 To Range("C1").End(xlDown).Row f="C:¥フォルダパス" & Cells(i,1).Value & ".pdf" ここから、行ごとに進んだ時に、黄色くならず反応しませんでした↓ If Dir (f)<>""Then z.Run("Acrobat.exe /t" & f) ↓ここにとびました。 Else End if Next i Set z=Nothing End Sub それ以前に、adobe acrobatが、更新されてから動いていたバッチファイルですら反応しなくなりました Adobeの環境設定をネットで見た通り見直ししたりしたのですが、全く成功しません。フォルダ内のpdfファイルを、全て印刷するvba(Acrobat.exe)を記載しない方法は成功したのですが、どうすれば、上手くいきますか? 教えていただきたいです。印刷の順番を指定したいです。 初心者なのでお手柔らかにお願いします。ちなみに動いているほうのvbaは下記です。 フォルダ内のファイルを全て印刷する、(順番関係なし)です。 Dim FolderPath As String Dim Filename As String Dim objShell As Object Dim objFolder As Object Dim objFile As Object FolderPath=ThisWorkbook.Path Set objShell=CreateObject("Shell.Application") Set objFolder=objShell.Namespace(ThisWorkbook.Path) For Each objFile In objFolder.items If Right(objFile.Name,4)=".pdf"Then objFolder.ParseName(objFile.Name) .InvokeVerbEx("print") End If Next objFile Set objFile=Nothing Set objFolder=Nothing Set objShell=Nothing End Sub 上記は全てネットから引用しています。 adobe acrobatを使うと反応しないので下記、上記に付け足ししたりして自身で初めて考えました。 Sub Test() Dim FolderPath As String Dim Filename As String Dim objShell As Object Dim objFolder As Object Dim objFile As Object FolderPath=ThisWorkbook.Path Set objShell=CreateObject("Shell.Application") Set objFolder=objShell.Namespace(ThisWorkbook.Path) For i=5 To Range("C1")End(xlDown).Row ObjFile.Name=FolderPath&Cells(i,1).value&".pdf" If Dir objFile.Name<>""Then objFolder.ParseName(objFile.Name).InvokeverbEx("print") Else End if Next i Set objFile=Nothing Set objFolder=Nothing Set objShell=Nothing MsgBox"印刷が完了しました" End Sub どこか文書変でしょうか?? 添削してくださいませんか。 順番に印刷、、できるとすごく仕事がはかどるため、成功させたいです。 お力添え、何卒お願いいたします。

  • vbsでのエラー処理についてレクチャーを

    vbsのcopyhere関数でファイルのコピーを行うスクリプトを作成しました。コピー自体は問題なく出来るのですが、コピー元のファイルが存在しなかった場合は何も実行されないまま次の処理へ行ってしまうので、そういう場合にエラー用の処理をさせたいと考えてます。 Errメソッド使えばいいと思うのですがうまくいかなかったのでご教授ください。 試しに作成したvbs----------------------------------------- On Error Resume Next Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace(strTargetFolder) 'コピー先フォルダの設定 objFolder.CopyHere strCopyFile , &H10 ' set objShell = Nothing 'コピーが失敗した場合に実行させる。 if Err.Number <> 0 Then MsgBox "インストーラーをコピーできませんでした。","コピーに失敗しました" WScript.Quit end if ↓正常にコピー完了した後の処理 これでは上手くいきませんでした。 どうすればエラー時の処理を追加できるでしょうか?

  • 全てのフォルダから最新ファイルを残し削除

    WindowsServer2008にて、 バックアップフォルダを定期的にリフレッシュ (最新以外を削除)するバッチを作りたいです。 CやVBなど、While文、関数のある言語でのプログラム経験がありますが バッチの方は不案内です。何卒ご教授くださいませ。 [処理内容] C:\testdir の配下に、サブフォルダdir1,dir2,dir3が存在します。 C:\testdir にバッチファイル、「dalete.bat」を配置。 実行するのはこの「dalete.bat」になります。 サブフォルダ dir1,dir2,dir3 の中のファイルは、 「no0.zip」,「no1.zip」,「no2.zip」と、規則的な名前です。 残したいのは「no0.zip」,「no1.zip」,「no2.zip」のうち、最新のファイル1個のみです。 [コード1] 次のようなプログラムを書きました。 まずは[dir1]フォルダのみの、 最新ファイル以外を削除するプログラムです。 ------------------------------------------ set L_FILE=C:\testdir\Delete.log echo %DATE% %TIME:~0,8% 処理開始 >> %L_FILE% REM 1フォルダ処理 cd dir1 REM 最新ファイルをリネーム保護 for /f "delims=" %%a in ('dir /b /o:d /a:-d') do set fname=%%a echo "%fname%" をリネーム保存 >> %L_FILE% copy "%fname%" "LASTFILE.zip" REM 他のファイルを削除 del "no*.zip" >> %L_FILE% REM リネーム保護を戻す ren "LASTFILE.zip" "%fname%" echo %DATE% %TIME:~0,8% 処理完了 >> %L_FILE% ------------------------------------------ 結果ログ 2013/11/29 2:17:15 処理開始 "no0.zip" をリネーム保存 2013/11/29 2:17:15 処理完了 ------------------------------------------ フォルダ[dir1]の中身は"no0.zip"のみで、期待した動きです。 [コード2] 次に、[dir1],[dir2],[dir3]全てのフォルダに対し、 最新以外のファイルを削除するコードを、以下のように書きました。 ------------------------------------------ set L_FILE=C:\testdir\Delete_all2.log echo %DATE% %TIME:~0,8% 処理開始 >> %L_FILE% REM フォルダ全てを処理 for /D %%i in (C:\testdir\*) do ( echo %%i フォルダ処理開始 >> %L_FILE% cd %%i REM 最新ファイルをリネーム保護(★) for /f "delims=" %%a in ('dir /b /o:d /a:-d') do set fname=%%a echo "%fname%" をリネーム保存 >> %L_FILE% copy "%fname%" "LASTFILE.zip" REM 他のファイルを削除 del "no*.zip" >> %L_FILE% REM リネーム保護を戻す ren "LASTFILE.zip" "%fname%" ) echo %DATE% %TIME:~0,8% 処理完了 >> %L_FILE% ------------------------------------------ 結果ログ 2013/11/29 2:22:03 処理開始 C:\testdir\dir1 フォルダ処理開始 "" をリネーム保存 C:\testdir\dir2 フォルダ処理開始 "" をリネーム保存 C:\testdir\dir3 フォルダ処理開始 "" をリネーム保存 2013/11/29 2:22:03 処理完了 ------------------------------------------ コード1で、動作確認が取れたコードですが、 ★部で、最新ファイルの取得に失敗しています。 結果、削除処理のみ期待通りに処理されサブフォルダ内の 全ファイルが削除されています。 どうすれば、全フォルダ、最新のみを残しループさせる事が出来るのでしょうか。 どうかお助けください。