'Permission denied' 运行 文件脚本
'Permission denied' running script on files
我在 Powershell 中设置了一个监视文件夹来创建校验和运行使用以下批处理文件:
pushd \server\folder
for %%a in (*.wav) do if not exist "%%a.md5" md5sum "%%a" >> "%%a.md5"
popd
我找到了,我将文件移动到文件夹中 运行 没问题,但如果我将文件复制到文件夹中,我会 'permission denied' 一些文件,导致校验和为空白。虽然它似乎并不一致,但我可以 运行 从文件夹手动批处理脚本,没有任何问题。我以管理员身份在系统上 (Win7)。有什么想法吗?
编辑:这是 powershell 脚本:
$folder = '\server\folder'
$filter = '*.wav'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
write-host "test"
Invoke-Item '\server\folder\checksum.bat'
由于您不是域管理员,因此您不能确定您对驱动器上的文件没有完全访问权限。
除了 PowerShell 脚本中需要的任何修复(抱歉,无能为力),您还应该授予自己对这些文件的完全访问权限。
在批处理文件中试试这个:
PUSHD \server\folder
FOR %%F IN (*.wav) DO @TAKEOWN /F "%%F"
FOR %%F IN (*.wav) DO @CACLS "%%F" /E /P <YourUsernameHere>:F
FOR %%F IN (*.wav) DO @IF NOT EXIST "%%F.md5" md5sum "%%F" >> "%%F.md5"
POPD
我在 Powershell 中设置了一个监视文件夹来创建校验和运行使用以下批处理文件:
pushd \server\folder
for %%a in (*.wav) do if not exist "%%a.md5" md5sum "%%a" >> "%%a.md5"
popd
我找到了,我将文件移动到文件夹中 运行 没问题,但如果我将文件复制到文件夹中,我会 'permission denied' 一些文件,导致校验和为空白。虽然它似乎并不一致,但我可以 运行 从文件夹手动批处理脚本,没有任何问题。我以管理员身份在系统上 (Win7)。有什么想法吗?
编辑:这是 powershell 脚本:
$folder = '\server\folder'
$filter = '*.wav'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
write-host "test"
Invoke-Item '\server\folder\checksum.bat'
由于您不是域管理员,因此您不能确定您对驱动器上的文件没有完全访问权限。
除了 PowerShell 脚本中需要的任何修复(抱歉,无能为力),您还应该授予自己对这些文件的完全访问权限。
在批处理文件中试试这个:
PUSHD \server\folder
FOR %%F IN (*.wav) DO @TAKEOWN /F "%%F"
FOR %%F IN (*.wav) DO @CACLS "%%F" /E /P <YourUsernameHere>:F
FOR %%F IN (*.wav) DO @IF NOT EXIST "%%F.md5" md5sum "%%F" >> "%%F.md5"
POPD