2016-10-24 19 views
0

いくつかのログファイルを収集し、ユーザーのディレクトリに圧縮するために使用したいバッチファイルがあります。私は、ファイルを実行すると、私はエラーを取得するバッチファイルから_zipit.vbsを実行するとアクセス許可が拒否される

_zipIt.vbs(4, 1) Microsoft VBScript runtime error: Permission denied

これは私が管理者として、管理者権限での.batを実行しようとしているWindows 7およびWindows 10上で起こります。私はcmdとWindowsエクスプローラから実行しました。私は事前にフォルダを作成し、完全なアクセス許可を与えようとしました。

このエラーメッセージを回避する方法はありますか?ここでは、使用されているコードです

Echo off 

Echo Gathering up the SolidWorks Logging files 

REM Get XML Debug Dump Directory 
FOR /F "skip=2 tokens=2,*" %%A IN ('reg.exe query  "HKEY_LOCAL_MACHINE\SOFTWARE\Dassault Systemes\SolidWorksPDM" /v DebugDir') DO set "XMLDIR=%%B" 

REM Make the directory and subdirectories for the results 
mkdir C:\Collected_Logs 
mkdir C:\Collected_Logs\xmldump 
mkdir C:\Collected_Logs\IEF 
mkdir C:\Collected_Logs\SLW 
mkdir C:\Collected_Logs\COG 
mkdir C:\Collected_Logs\COG 
mkdir C:\SLW_LogFiles 
icacls "C:\SLW_LogFiles" /grant %USERNAME%:(OI)(CI)F /T 

REM Gather the log files 
xcopy /q C:\Users\%USERNAME%\ENOVIASolidWorksInteg C:\Collected_Logs\SLW 
xcopy /q C:\%XMLDIR% C:\Collected_Logs\xmldump 
xcopy /q C:\Users\Administrator\ief\logs C:\Collected_Logs\IEF 
xcopy /q C:\Users\%USERNAME%\appdata\local\ief C:\Collected_Logs\IEF 
xcopy /q "C:\Users\%USERNAME%\AppData\Local\Dassault Systemes\Connector for SOLIDWORKS" "C:\Collected_Logs\COG" 
GOTO ZIPIT 

:ZIPIT 
set TEMPDIR=C:\tempzip  
mkdir %TEMPDIR% 

icacls "%TEMPDIR%" /grant %USERNAME%: (OI)(CI)F /T 

xcopy /q /e C:\Collected_Logs %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 objShell.NameSpace(ZipFile).CopyHere(source) >> _zipIt.vbs 
Echo wScript.Sleep 2000 >> _zipIt.vbs 
CScript _zipIt.vbs %TEMPDIR% C:\SLW_LogFiles 

REM Pause briefly to allow ZIPIT to finish 
PING 1.1.1.1 -n 1 -w 600 >NUL 

REM Clean up the temporary directories we created 
rmdir /S /Q %TEMPDIR% 
rmdir /S /Q C:\Collected_Logs 

Echo The log files have been zipped up and placed in the directory C:\SLW_LogFiles 

答えて

0

私はコードの問題を解決しました。これは、この行だった

ます。CScript _zipIt.vbs%のTEMPDIR%でのCします。cscriptに変数TEMPDIRを渡す\ SLW_LogFiles

パスをハードコーディングは、ここでの問題

を解決し、エラーメッセージの原因となったが正しいですコード

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 objShell.NameSpace(ZipFile).CopyHere(source) >> _zipIt.vbs 
Echo wScript.Sleep 2000 >> _zipIt.vbs 

CScript _zipIt.vbs C:\Collected_Logs C:\SLW_LogFiles\Logs.zip 
関連する問題