私はここのようなバッチ/ VBS溶液で一部のフォルダを圧縮したい:https://superuser.com/a/112094このvbscriptは、実行コマンドでどのように正しく動作しますか?
この1は動作しますが、元の溶液は、「スリープ」を使用しています - 機能と私のアーカイブは異なるfilesizesを持って、このwouldn'tように、正しく機能します。私の考えは、実行コマンド(待機パラメータ)を使用することでしたが、失敗します。どのように私は、スクリプトはジップまで待つことを達成することができますobjShell.Run
:
オブジェクトは、このプロパティまたはメソッドをサポートしていません:
set FILETOZIP=C:\users\xyz\documents\folderOrfile set TEMPDIR=C:\users\xyz\documents\temp rmdir %TEMPDIR% /s /q mkdir %TEMPDIR% xcopy /s %FILETOZIP% %TEMPDIR% echo Set objArgs = WScript.Arguments > _zipIt.vbs echo InputFolder = objArgs(0) >> _zipIt.vbs echo ZipFile = objArgs(1) >> _zipIt.vbs echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> _zipIt.vbs echo Set objShell = CreateObject("Shell.Application") >> _zipIt.vbs echo Set source = objShell.NameSpace(InputFolder).Items >> _zipIt.vbs echo theString = objShell.NameSpace(ZipFile).CopyHere(source) >> _zipIt.vbs echo objShell.Run theString, 1, true >> _zipIt.vbs CScript _zipIt.vbs %TEMPDIR% C:\users\xyz\documents\someArchive.zip pause
エラーメッセージは以下のとおりです。創造された?
問題が解決しないこと。 VBScriptコードは空のzipファイルを最初に作成するため、存在の有無を確認する必要はありません。また、圧縮を行っているCOMオブジェクトが非同期に実行されますが、スクリプトの実行時に終了するため、その時点でまだ終了していない場合はコピーが中止されます。 –
ええ、あなたの答えは彼のコードで問題に対処するのにうまくやったのです(私はそれを拒否したのです)。実際の質問に答えようとしましたが、「ジップが作成されるまでスクリプトは待っています。他の問題。 –
あなたはコードを誤解していると思います。すべての 'echo'文は、' cscript _zipit.vbs ... 'で実行される1つのVBScriptを作成します。この単一のVBScriptは、zipファイルを作成し、ファイルをコピーします。 VBScriptを実行する前にzipファイルが存在するかどうかを確認すると、無限ループが作成されます。 –