ママのスキンケアのお悩みにおすすめアイテム

VBScriptで空フォルダ圧縮
VBScriptでファイルまたはフォルダを圧縮したく、
以下のURLを参考に作成しようと思っています。
http://okwave.jp/qa/q2006207.html

しかし、空フォルダを圧縮しようとすると、
「指定されたディレクトリC:\新しいフォルダ は空なので、圧縮(zip形式)
フォルダはそのディレクトリをアーカイブに追加できません。」
というエラーがポップアップで表示され、OKをクリックすると、
C:\書庫.zipは作成されていますが、解凍するとエラーになります。

そもそも空フォルダを圧縮しようというのは無理なのでしょうか?

日毎にフォルダのバックアップを取りたくて、かつ、管理の面から
空フォルダもzipで保存したいと考えております。

空フォルダを圧縮するなにか良い方法があれば教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>zip32.dll、ZIP32J.DLLをC:\MINDOWS\SYSTEMにコピー


>してから、空フォルダをtest.vbs上にドラッグして実行
>しましたが、結果は同じでした。

ただ、これだけではダメで、
ZIP32J.DLLを使うようにソースを修正しないといけません

ソースを修正していないため、zipfldr.dllが動いています
    • good
    • 0

>「指定されたディレクトリC:\新しいフォルダ は空なので、圧縮(zip形式)フォルダはそのディレクトリをアーカイブに追加できません。


zipfldr.dllの制限のようです。
エクスプローラの右クリックメニュー"送る->圧縮(ZIP形式)フォルダ"でもエラーとなります

>C:\書庫.zipは作成されていますが、解凍するとエラーになります。
ZIPファイル作成後エラーになった場合、削除してないだけと思います
(ファイルサイズが0ではありませんか?)

>そもそも空フォルダを圧縮しようというのは無理なのでしょうか?
ZIP32J.DLLを使用すれば可能です
なお、ZIP32J.DLLのインストールが必要になります
    • good
    • 0
この回答へのお礼

>なお、ZIP32J.DLLのインストールが必要になります

すみませんが、やりかたを教えてください。
zip32.dll、ZIP32J.DLLをC:\MINDOWS\SYSTEMにコピー
してから、空フォルダをtest.vbs上にドラッグして実行
しましたが、結果は同じでした。

お礼日時:2010/01/29 09:26

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフォルダ内の指定ファイルをzip形式で圧縮してほかのフォルダにいれる。(vbscript)

vbscriptを学び始めたものです。よろしくおねがいいたします。http://www.hatena.ne.jp/1123181645
いまインターネットで見つかったソースを拝見しています。これはフォルダ内のすべてのファイルを一個ずつ圧縮して保存するが何とか直して指定ファイルにしたいですが
どこに手を入れればいいかわからなくて質問させていただきました。わかる方がいるならぜひともご教授ください!

Aベストアンサー

>うまくいきませんでした。
file = "filePath"
みたいにしてませんか
file = fso.GetFile("filePath")
ようにすれば大丈夫だと思いますが・

QVBA zipファイルの作成

(1)作業環境
Windows 7 Professional SP1
Intel(R) Core(TM) i3­3240 CPU @ 3.40GHz 4.00GB
32ビットオペレーティングシステム
Microsoft Office Standard 2010
Excel ver.14


(2)やりたいこと
3つのファイルのzipファイルを同じフォルダに作成したい
  C:\temp\a.txt
  C:\temp\b.txt
  C:\temp\c.txt
  から
  C:\temp\d.zip
  を作りたい。


(3)状況
下記サイトを参照しましたが知識不足で正確にわからないのと、『本当にこんなに長いコードが必要なのか?』と疑問に思っています。

 参考①VBAでZIP圧縮する。
 http://scripting.cocolog-nifty.com/blog/2007/11/vbazip_a144.html

 参考②ファイル/フォルダをzipファイルに圧縮
 http://qiita.com/kou_tana77/items/72346c69107fabf99335

定義、ループ、分岐など基本的なことは分かっています。
APIやFSOなども詳しくはないですが、知っています。
たとえば①の「fso.*******」、「Shell.*******」などの、*******が分かりません。


(4)質問事項
余計なものは除いて必要最低限のコードだけにするとどのようになるかしりたいです。
※エラー処理などに関しては使用環境にあわせて作成します。


ご存じの方ご教示くださいm(_ _)m

(1)作業環境
Windows 7 Professional SP1
Intel(R) Core(TM) i3­3240 CPU @ 3.40GHz 4.00GB
32ビットオペレーティングシステム
Microsoft Office Standard 2010
Excel ver.14


(2)やりたいこと
3つのファイルのzipファイルを同じフォルダに作成したい
  C:\temp\a.txt
  C:\temp\b.txt
  C:\temp\c.txt
  から
  C:\temp\d.zip
  を作りたい。


(3)状況
下記サイトを参照しましたが知識不足で正確にわからないのと、『本当にこんなに長いコードが必要なのか?』と疑問に思ってい...続きを読む

Aベストアンサー

こんな感じでしょうか?
・既に圧縮書庫ファイルが存在する場合は上書きされます。
・指定した被圧縮ファイルが存在しなかった場合はハングアップします。

-----------------------------
Sub MakeZip()
Dim sfo As Object, app As Object
Set sfo = CreateObject("Scripting.FileSystemObject")
Set app = CreateObject("Shell.Application")

Dim zipFolder As Object
Dim file As Variant
Dim count As Long

Const zipFile = "C:\excel\圧縮.zip" '圧縮書庫ファイルの絶対パス
Dim files As Variant
files = Array("C:\excel\あ.txt" _
, "C:\excel\い.txt" _
, "C:\excel\う.txt") ' 圧縮するファイルの絶対パス

'空のzipファイルを作成する
With sfo.CreateTextFile(zipFile, True)
.Write "PK" & Chr(5) & Chr(6) & String(18, 0)
.Close
End With
Set zipFolder = app.Namespace(sfo.GetAbsolutePathName(zipFile))

'zipファイルに圧縮対象のファイルをコピーする
count = 0
For Each file In files
count = count + 1
zipFolder.CopyHere (sfo.GetAbsolutePathName(CStr(file)))
'このファイルのコピーが終わるまで待つ。
Do Until zipFolder.Items().count = count
Application.Wait Now + TimeSerial(0, 0, 1)
Loop
Next
Set sfo = Nothing
Set app = Nothing
Set zipFolder = Nothing
End Sub

こんな感じでしょうか?
・既に圧縮書庫ファイルが存在する場合は上書きされます。
・指定した被圧縮ファイルが存在しなかった場合はハングアップします。

-----------------------------
Sub MakeZip()
Dim sfo As Object, app As Object
Set sfo = CreateObject("Scripting.FileSystemObject")
Set app = CreateObject("Shell.Application")

Dim zipFolder As Object
Dim file As Variant
Dim count As Long

Const zipFile = "C:\excel\圧縮.zip" '圧縮書庫ファイルの絶...続きを読む

QWindows7 zip圧縮・解凍のコマンド

同様の質問があったらすみません。

OS Windos7 では、標準でzipファイルの圧縮・解凍ができるようですが、
この操作をcmd.exeを使って行いたいと考えています。

質問(1)
そのようなコマンドはありますか?

質問(2)
コマンドがあれば、教えてください。
または、参照できるホームページ等教えていただけませんか?

よろしくお願いいたします。

Aベストアンサー

> コマンドがあれば、教えてください。

Win7はzipfldr.dllで処理しています。
RouteTheCall パラメータはfilename.zipのサブフォルダに
filenameフォルダを作成して解凍ファイルを格納します。
filenameにはzipファイル名を指定してください。

rundll32.exe zipfldr.dll,RouteTheCall filename.zip

Q圧縮時に空のフォルダを残すには

ファイル圧縮時に空のフォルダを残すにはどうしたらいいでしょうか。

例えば
abcフォルダに、file.datというファイルとfoldという空のフォルダがあるとします。これを圧縮したいのですが、file.datは圧縮されますが、foldフォルダは消えてしまいます。空のフォルダにしないでその中に何かファイルを入れておけば消えないのですが、空のままだとだめなようです。
lhaplus,lhaca,lhazなどフリーソフトをことごとく使ってみましたが、空のフォルダを残しておいてくれるソフトが見つかりませんでした。
何かいいソフトはないものでしょうか。

Aベストアンサー

Windowsですよね?
「LHMelting」でしたら、たしかデフォルト状態で可能です。
書庫に関する様々なオプションが設定可能なソフトです。
書庫を使いこなすことができます。
便利なので、いつも使わせてもらってます。
http://www2.nsknet.or.jp/~micco/mysoft/lhmelt.htm

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む

Qファイルコピーのスクリプトで上書き確認のダイアログが表示

Windows2003 Server にて、
ファイルコピーのスケジュールを登録しようと
下記のスクリプトを作りましたが、
実行すると「上書き確認」のダイアログが表示されてしまいます。
上書き確認のダイアログを表示させずに、
自動で上書きさせる方法を教えてください。
---------------------------------------------------
Set WshShell2 = WScript.CreateObject("Shell.Application")
Set oFolder=WshShell2.NameSpace(ToFolder)
oFolder.CopyHere FromFile, &h10
---------------------------------------------------
「WScript」を使っているのは、
コピーしている事が視覚的に分かりたいので、書類が飛んでいる表示をさせたいからです。

Aベストアンサー

oFolder.CopyHereの第二引数にFOF_NOCONFIRMATION(0x0010)を指定します。

http://homepage3.nifty.com/aya_js/wsh/wsh24.htm

QZIPファイルの作成をコマンドから行いたい

Windows2003やXPでは、ファイルの右クリック→圧縮で
ZIPファイルを作成することが可能ですが、
これをコマンドから実行することは可能なのでしょうか?
可能ならば、どう書けばよいでしょうか…。

よろしくお願いいたします。

Aベストアンサー

> これをコマンドから実行することは可能なのでしょうか?

標準のコマンドは存在しませんから、既存のDOSやWindowsで使われていたのと同じく、それ用のコマンドをダウンロードして使用します。

はてな - WindowsのコマンドラインやバッチファイルでlLZHやZIPファイルの展開を行いたいのですが、
Http://www.hatena.ne.jp/1105496465
(直接リンクは切っておきます)

などを参考に、LZH形式の例ですと、

LHA32
http://www.vector.co.jp/soft/win95/util/se347175.html

をダウンロード、D:\に展開します。

以下のように打ち込んで圧縮を行います。

D:\>lha32 a test.lzh README.1ST


ダウンロードしたものにreadmeやヘルプコマンドがあるハズなので、そちらを参考にして下さい。

--
あるいは、Lhacaなどはコマンドラインからの引数を受け付けています。

| ●圧縮
| C:¥Program Files¥Lhaca>Lhaca.exe ”c:¥icons”

この辺はソフト次第ですし、Lhacaにしても上の操作はサポート外だったハズ。

> これをコマンドから実行することは可能なのでしょうか?

標準のコマンドは存在しませんから、既存のDOSやWindowsで使われていたのと同じく、それ用のコマンドをダウンロードして使用します。

はてな - WindowsのコマンドラインやバッチファイルでlLZHやZIPファイルの展開を行いたいのですが、
Http://www.hatena.ne.jp/1105496465
(直接リンクは切っておきます)

などを参考に、LZH形式の例ですと、

LHA32
http://www.vector.co.jp/soft/win95/util/se347175.html

をダウンロード、D:\に展開...続きを読む

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Q空のフォルダの判定

お世話になります。

開発環境:VisualBasic.net 2005

名前を指定したフォルダが空のフォルダであるならばそのフォルダを削除し、
ファイルが存在すれば処理を行う。
という記述を書こうとしているのですが、
どのように書いてよいのか悩んでいます。

If フォルダ名=からのフォルダであるか Then
***フォルダの削除処理***
Else
***処理***
EndIF

1.指定フォルダの中のファイルを一覧表示し、一覧に何も表示されなかったTrueとする

2.IO.Directory.Delete("C:\TestFolder")
 でエラーが帰ってこなければTrueとする

3.何か適切な関数があるかもしれないので探してみる

ということを考えたのですが、最適な方法があればご教授お願いいたします。

Aベストアンサー

1と2の応用で、

サブフォルダの数
> System.IO.Directory.GetDirectories("C:\TestFolder").Length

と、ファイルの数
> System.IO.Directory.GetFiles("C:\TestFolder").Length
の合計が0なら、フォルダは空とみなす。

とかはどうでしょう?

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング