首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell VB Inputbox验证

Powershell VB Inputbox验证
EN

Stack Overflow用户
提问于 2018-01-07 15:24:40
回答 1查看 392关注 0票数 1

我好像被困在这上面了,看起来应该很简单。我已经谷歌和尝试了3个小时的各种事情,只是无法得到它。

只是一个小小的警告:下面的代码并不是真正属于我的(好吧,代码错误的部分可能是)。我已经收集了大约30个不同来源的信息,使它发挥作用,我没有保存一个参考书目,所以如果其中一些看起来像你的工作,然后感谢你和抱歉,因为不能给你的荣誉。

此脚本所做的是监视由系带相机生成的jpg文件文件夹,当一个新文件到达输入框并请求新文件名时,它将重新命名新文件,在子目录中创建一个副本,并调用外部exe,该外部exe将复制的文件调整为500x500px。

正如前面提到的,它可以工作,但我知道这很麻烦,我似乎不知道如何验证用户是否将信息输入到输入框中,并选择OK (相对于取消,或者没有输入任何信息)。我似乎也想不出如何将其中一些重复地址声明为$variables。我所做的一切都使剧本失败了。

这是脚本,你能提供的任何帮助都是很棒的。

代码语言:javascript
复制
#   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}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-07 17:53:56

验证用户是否将信息输入到输入框并选择OK

如果用户按cancel或使输入字段为空,则$newname为空。这可以在if语句中使用,以确保只有在输入正常时才会进行重命名:

代码语言:javascript
复制
$newname = [Microsoft.VisualBasic.Interaction]::InputBox('New file name', 'Rename File', 'ddd')
if ($newname) {
  Rename-Item $global:directory\$name $newname".jpg"
...
}

附加改良剂

在以后几次使用时声明附加变量resized_directory

代码语言:javascript
复制
$global:resized_directory = "C:\Users\JoeBlogs\Desktop\Folder\Resized"

这一行应该移到顶部,因为这只需要做一次:

代码语言:javascript
复制
if (!(Test-Path -path $resized_directory)) {New-Item $resized_directory -Type Directory}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48138600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档