【发布时间】:2018-01-08 01:53:56
【问题描述】:
我似乎有点坚持这一点,看起来它应该很简单。我已经在谷歌上搜索并尝试了 3 小时的各种东西,但就是无法得到它。
只是一个小警告:下面的代码并不是我自己的(可能是编码不佳的位)。我从大约 30 个不同的来源收集了信息以使其正常工作,并且我没有保留参考书目,因此如果其中一些看起来像您的作品,那么感谢您并抱歉无法给予您信任。
这个脚本的作用是监视一个文件夹中由网络摄像机生成的 jpg 文件,当一个新文件到达时,一个输入框会弹出并询问一个新的文件名,然后重命名新文件,创建一个副本一个子目录并调用一个外部 exe 将复制的文件大小调整为 500x500px。
如前所述,它有效,但我知道它很混乱,我似乎无法弄清楚如何验证用户是否在输入框中输入了信息并选择了确定(而不是取消,或者没有输入信息)。我似乎也无法弄清楚如何将其中一些重复地址声明为 $variables。我尝试过的所有脚本都失败了。
这是脚本,您能提供的任何帮助都会很棒。
# DECLARE GLOBAL VARIABLES
$global:directory = "C:\Users\JoeBlogs\Desktop\Folder"
$filter = "*.jpg"
# SET FOLDER TO WATCH + FILES TO WATCH + NO SUBFOLDERS
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $global:directory
$watcher.Filter = $filter
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
# DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { $latest = dir $global:directory | Sort CreationTime -Descending | Select name -First 1
$name = $latest.name
$basename = $name.ToUpper().replace(".JPG","")
Add-Type -AssemblyName Microsoft.VisualBasic
$newname = [Microsoft.VisualBasic.Interaction]::InputBox('New file name', 'Rename File', $basename)
Rename-Item $global:directory\$name $newname".jpg"
if (!(Test-Path -path $global:directory\"Resized")) {New-Item $global:directory\"Resized" -Type Directory}
Copy-Item -path $global:directory\$newname".jpg" -destination $global:directory\"Resized"\$newname".jpg"
&"C:\Users\JoeBlogs\Desktop\PhotoResize500x500IOQ100.exe" $global:directory"\Resized\"$newname".jpg"
}
# DECIDE WHICH EVENTS SHOULD BE WATCHED
Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 3}
【问题讨论】:
标签: powershell