我似乎对此有点困惑,看起来它应该非常简单。我一直在谷歌搜索和尝试各种各样的东西3小时,但是无法得到它。
只是一个小警告:下面的代码实际上不是我自己的(很可能是编码不好的位)。我收集了来自大约30个不同来源的信息以使其正常工作,我没有保留参考书目,所以如果其中一些看起来像你的作品,那么谢谢你,抱歉没有能够给你信任。
这个脚本的作用是监视由栓系相机生成的jpg文件的文件夹,当新文件到达时弹出一个输入框并要求新文件名,然后重命名新文件,创建一个副本一个子目录并调用外部exe,它将复制的文件大小调整为500x500px。
如上所述,它有效,但我知道它很乱,我似乎无法弄清楚如何验证用户将信息输入到输入框中并选择了OK(而不是取消,或者没有输入信息)。我似乎也无法弄清楚如何将这些重复的地址声明为$变量。脚本因我尝试的一切而失败。
这是脚本,您可以提供的任何帮助都会很棒。
# 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}
答案 0 :(得分:1)
验证用户是否将信息输入到输入框中并选择确定
如果用户按下cancel
或将输入字段留空,则$newname
为空。
这可以在if语句中使用,以确保仅在输入正常时才进行重命名:
$newname = [Microsoft.VisualBasic.Interaction]::InputBox('New file name', 'Rename File', 'ddd')
if ($newname) {
Rename-Item $global:directory\$name $newname".jpg"
...
}
其他改进
声明其他变量resized_directory
,因为它使用了几次:
$global:resized_directory = "C:\Users\JoeBlogs\Desktop\Folder\Resized"
这一行应该移到顶部,因为这只需要进行一次:
if (!(Test-Path -path $resized_directory)) {New-Item $resized_directory -Type Directory}