'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