vbsでバックアップデータファイルをlzh形式に自動圧縮する方法

このQ&Aのポイント
  • 毎日、システムのバックアップデータが、その日の日付をファイル名として作成され、このファイルを日々圧縮する方法を教えてください。
  • 教えて!gooなどで調べて見つけたソースコードを使用して、vbsでバックアップデータファイルをlzh形式に自動圧縮する方法を実現しようとしています。しかし、変数の使い方が間違っているのか分からず、アドバイスをいただきたいです。
  • 毎日ファイル名が変わるため、バックアップデータファイルを自動的にlzh形式に圧縮する際に変数を使いたいです。どのように変数を使用すればよいのか、ご教示いただけますか?
回答を見る
  • ベストアンサー

vbsでバックアップデータファイルをlzh形式に自動圧縮したい

毎日、システムのバックアップデータが、その日の日付をファイル名として作成されます。 このファイルを日々圧縮しているのですが、自動で出来たらと思います。 『教えて!goo』等で調べて何とか書いたのが下のソースです。 StrLzhName = "test.txt.lzh" StrFileName = "test.txt" Set shell = WScript.CreateObject("WScript.Shell") shell.CurrentDirectory = "c:\" Set wShell = CreateObject("WScript.Shell") Set oExec = wShell.Exec("lha32 a -d StrLzhName StrFileName") c:\直下に、lha32.exeと、test.txtを置いてあります。 wShell.Exec()で、変数StrLzhNameと、StrFileNameを直接、 test.txt.lzh、test.txtと指定すると、圧縮できます。 このような変数の使い方は間違っているのでしょうか?? 毎日ファイル名が変わるので、どうしても変数が使いたいのです。 アドバイスよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★文字列変数の使い方が間違っています。 ・文字列と文字列の連結は『&』文字で行います。  文字列定数と文字列変数の連結も『&』文字で行います。 ・以上。おわり。 間違い⇒『Set oExec = wShell.Exec("lha32 a -d StrLzhName StrFileName")』 正しい⇒『Set oExec = wShell.Exec("lha32 a -d " & StrLzhName & " " & StrFileName)』

kyon2010
質問者

お礼

さっそく直して、思い通りできました。 こんなに早く回答していただけるとは… 思い切って質問して正解でした。 ありがとうございました。

関連するQ&A

  • cscriptで文字変数 に ” を入力するには

    お世話になります。 早速ですが、質問があります。 c:\test\test.exe -path "D:\data" -file "aaa.txt" -flag a というコマンドをcscript のプログラムから起動したいのですが、コマンド文字列を文字列変数に代入する方法 がありましたら、教えてください。 Cscript test.vbs %1 ======================================= Dim WshShell Dim oExec Dim Cmd Dim File File = WScript.Arguments(0) Cmd = "c:\test\test.exe -path "D:\data" -file "a.out" -flag " & File                     ↑↑↑↑                  これができません? Set WshShell = CreateObject("WScript.Shell") set oExec = WshShell.Exec(Cmd) Do While oExec.Status = 0 Wscript.Sleep 100 Loop "も文字列に入力するには、どのようにすればいいでしょうか? ご意見、アドバイスよろしくお願いいたします。

  • VBSでファイルの自動保存

    vbs初心者です。自分なりに調べたのですが、うまくいかず、アドバスを願い致します。目的は、ファイルを自動保存したいのです。 以下のように記載して、最後にカレントデレクトリイに「test.txt」と名前をつけて保存させたいのです。よろしくお願い致します。 Set objShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 1000 objShell.Run "notepad.exe" objShell.SendKeys "hello "  objShell.SendKeys "%{F4}" objShell.SendKeys "%y"  

  • LZH形式のファイルについて

    うちのパソコンZIP形式の圧縮ファイルしか開けないんですが、どうしても、CGIゲームが使いたいため、 LZH形式の圧縮ファイルを開けるソフトを探しています。 ただ、LHAユーティリティ32は、 使い方がまったく分からないため、こちらはやめてください。

  • 圧縮(lzh)を解凍するvbのサンプルありませんか?

    圧縮(lzh)を解凍するvbのサンプルありませんか? インプットFILE aaa.lzh・・・lha形式の圧縮ファイル アウトプットFILE aaa.txt・・・aaa.lzhを解凍したファイル プログラム仕様 aaa.lzhを読み込み、解答してaaa.txtに出力する。

  • VBSでファイル作成後、書き込みできない

    ファイルが存在している場合は、ファイルをオープンして書き込み、ファイルが存在していない場合は、ファイルを作成後、オープンして書き込みを行わせたいと考えています。 しかし、ファイルが存在していないとき、ファイルは作成されるのですが、『エラー:800A0046 書き込みできません。VBScript実行時エラー』が出て、書き込みができません。モードをWritingにしても同じでした。 お手数をおかけしますが、ご教示いただけますようお願いいたします。 Option Explicit '■ オブジェクトの宣言 Dim objFSO Dim objFile '■ 定数の宣言 Const strFileName = "C:\VBS\TEST.TXT" '■ 定数の宣言 '// ファイル入出力モード(8:追加書き込み) Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strFileName) Then WScript.Echo "ファイルが見つかりました" Else WScript.Echo "ファイルが見つかりませんでした" Set objFile = objFSO.CreateTextFile(strFileName) If IsObject(objFile) Then WScript.Echo "ファイルを作成しました" Else WScript.Echo "ファイルを作成できませんでした" WScript.Quit(1) End If End If '// ファイルのオープン Set objFile = objFSO.OpenTextFile(strFileName,ForAppending) objFile.WriteLine "2012/12/21,100,ブレーキパッド,35000"

  • vbsファイルにてaiueo.batを昨日の日付にて実行する方法について

    vbsファイルにてaiueo.batを昨日の日付(2007 01 27)にて実行するため 下記のようなスクリプトファイルを作成しましたが、 最終行にてエラーにより処理が止まってしまいます。 置換の部分の処理にてエラーが発生しているのはわかっているのですが、 どのように修正を加えればよいのかがわかりません。 ご教授のほど、よろしくお願いします。 ----------------------------------------------------- Option Explicit Dim strValue ' 変換する文字列 Dim strBefore ' 変換前の文字列 Dim strAfter ' 変換後の文字列 strValue = Date() strBefore = "/" strAfter = " " Set wShell = CreateObject("WScript.Shell") Set oExecute = wShell.Exec(aiueo.bat Replace(Date() -1, strBefore, strAfter)) -----------------------------------------------------

  • コマンドプロンプトの出力をVBScript内の変数に代入する

    VBScriptからコマンドプロンプトのver | findstr 5.1を実行し、その出力結果をVBScript内の変数に代入したいのですが、どうすればいいでしょうか? Dim WShell Dim result Set WShell = WScript.CreateObject("WScript.Shell") WShell.Run "cmd /c (ver | findstr XP > " & result & ")" MsgBox result とやってもresultには何も入っていませんでした。

  • VBSでコマンド発行したいが・・・

    VBscriptでうまいことテキストにあるコマンドを発行できません。 文が全然違う気がしてきて・・・・ Dim strCOM For i = 1 to 15 strCOM = "cmd /C cd /d D:\HEPPOKO & Format("0000", i) & .txt" Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("strCOM ") DドライブにあるHEPPOKO0001.txt~HEPPOKO0015.txtを順次展開したいのですが・・・ どなたかご指示ください。

  • vbsでテキストファイル内の文字列検索

    初心者です。 テキストファイルを指定し、含まれる文字列を検索し、 結果表示したいと考えております。 色々探して、以下で作成したのですが、 うまく動いてくれません。 出来ましたら、テキストファイルの中の文字列の 一部分を指定して動作させたいと思っております。 どなたかご教示のほど宜しくお願い致します。 ---------------------------------------------------- Set WSHFso = CreateObject("Scripting.FileSystemObject") Set WshShell = WScript.CreateObject("WScript.Shell") Dim strSearchWord Set tmpFile = WSHFso.OpenTextFile("C:\AAA.txt") Do Until tmpFile.AtEndOfStream tmpLine = tmpFile.ReadLine strSearchWord = strSearchWord & tmpLine & vbcrlf Loop Dim SearchWord SearchWord = split(strSearchWord," ") if InStr(SearchWord(ix), "test")<>0 then WScript.Echo " testを含みます。" else WScript.Echo " testを含みません。" end if ----------------------------------------------------

  • VBSファイルを定期的に自動実行する方法

    毎日同時刻に下記のVBSファイルを自動実行したいと思います。 タスクスケジューラで実行すると download.exe は起動しますが 表示されたダイアログがアクティブ状態にならないため (タイトルバーが灰色のまま、タスクバーのボタンが点滅)、 文字入力ができないまま、処理が終了してしまいます。 1.ダイアログをアクティブにし、正常に処理を実行させるには   どのように記述すれば良いですか? 2.このVBSファイルをユーザーがログオフされている状態で   実行することは可能ですか? 恐れ入りますが、ご存じの方がおられましたら、ご教示願います。 <環境> Windows 2008 Server R2 standard (64ビット) <D:\aaa.vbs> Set objShell = WScript.CreateObject("WScript.Shell") 'ダウンロードEXEを実行 Set objExec = objShell.Exec("D:\download.exe") WScript.Sleep 1000 objShell.AppActivate(objExec.ProcessID) 'ファイルのダウンロード先を指定し、実行(ENTER) WScript.Sleep 1000 objShell.SendKeys "D:\data.txt~"

専門家に質問してみよう