将文件添加到文件夹时运行 .bat 文件的 Powershell 脚本

2023-12-11

我想监视 Windows 7 文件夹,并在将任何新文件添加到该文件夹​​时运行 .bat 文件。看来我应该能够使用安装在计算机上的 powershell 来执行此操作。

我读过一些答案,例如this one但我还无法通过修改我所看到的内容来使任何东西发挥作用。细节:

要监视的文件夹:

c:\aaa\bbb\monitorThis

每当 .htm 文件添加到受监视文件夹时运行的批处理文件:

c:\aaa\bbb\runA.bat

Powershell脚本文件:

c:\aaa\bbb\folderWatcher.ps1

有人可以描述folderWatcher.ps1 的内容应该是什么样子,包括包含运行.bat 文件的命令、注册和取消注册事件等的行吗?

另外,右键单击.ps1文件并选择“使用PowerShell运行”是否是启动监控的方式,如果是,如何停止?

UPDATE:

根据要求,这是我到目前为止对folderWatcher.ps1的了解,但这只是我所看到的想法的一个开始:

$folder = "c:\aaa\bbb\toConvert"
$filter = "*.*"

$fsw = new-object System.IO.FileSystemWatcher $folder, $filter -Property @{
  IncludeSubDirectories=$false
NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite'
}

 $onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {

  Start-Process cmd -ArgumentList "/c runA.bat" -WorkingDirectory "C:\aaa\bbb"
}

注意:重新过滤,我不关心添加什么类型的文件,因为我们只会将 .htm 文件放入该文件夹中,所以添加到其中的任何内容我都想触发 .bat。

更新二

我尝试了下面丹尼斯的代码,但我什么也没得到。我只是仔细检查了我的所有路径,以确保它们与他所拥有的相同。我还刚刚制作了一个具有更简单路径的新测试版本,因此我可以准确发布我所拥有的内容,而无需匿名:

 $folder = 'C:\Developer\psTest' # Enter the root path you want to monitor. 
 $filter = '*.htm'  # You can enter a wildcard filter here. 

 $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 
 cmd.exe /c 'C:\Developer\psTest\runAnt.bat'
 }

为了清楚我在做什么:

我现在有一个名为C:\Developer\psTest\FolderWatcherTest.ps1其中包含上面的代码。

当我右键单击它并选择“使用 PowerShell 运行”时,控制台窗口会闪烁一些文本,但在关闭之前速度太快,无法阅读。

当我将 .htm 文件拖入C:\Developer\psTest, 什么都没发生。

我将注销代码放入一个名为FolderWatcherStop.ps1的文件中,当我单击该文件时,控制台会闪烁一些红色文本,同样太快而无法阅读,然后它关闭。

我究竟做错了什么?有件事我确信。

更新三

按照丹尼斯的建议,我成功了。这需要稍微修改批处理文件以包含我想要运行的 ANT 构建的完整路径,但它有效。

注意:我想我刚刚明白为什么触发器会重复,将会更新。


干得好:

$folder = 'f:\test' # Enter the root path you want to monitor. 
$filter = '*.html'  # You can enter a wildcard filter here. 

$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 'f:\test\test.bat'
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文件添加到文件夹时运行 .bat 文件的 Powershell 脚本 的相关文章

  • 用于检查 URL 状态的 PowerShell 脚本

    与此问题类似 https stackoverflow com questions 18500832 script to check the status of a url我正在尝试监视一组网站链接是否已启动并运行或没有响应 我在 Inter
  • Powershell 数组到带引号的逗号分隔字符串

    我有一个数组 需要输出到逗号分隔的字符串 但我还需要引号 这是我所拥有的 myArray file1 csv file2 csv a myArray join a 输出为 a最终 file1 csv file2 csv 我想要的输出是 fi
  • 有什么工具可以了解 Windows 中正在运行的进程的布局(段)?

    我一直很好奇 该进程在内存中到底是什么样子的 其中有哪些不同的部分 部分 程序 在磁盘上 和进程 在内存中 到底是如何相关的 我之前的问题 有关可执行程序 进程 的内存布局的更多信息 https stackoverflow com ques
  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • Powershell DSC Pull 服务器引发内部错误 - Microsoft.Isam.Esent.Interop 未找到

    我已按照 Powershell org 中的说明进行操作DSC Book http powershell org wp ebooks 设置 http Pull 服务器 Windows 2012 服务器 以与 DSC 一起使用 我设置了 ht
  • SQL Server 2008:如何使用 powershell 获取“消息”选项卡(在 Management Studio 中)输出

    我在用invoke sqlcmd管理我的数据库 它工作得很好 我将 Management Studio 中 结果 选项卡的输出保存到日志文件中 当我做一个BACKUP DATABASE 输出是在 消息 选项卡上完成的 我想将其保存在日志文件
  • NSIS获取参数

    to get n 0值作为字符串 不需要选项 传递给安装程序 我不太明白这个函数的工作原理是什么 GetParameters input none output top of stack replaces with e g whatever
  • PE 文件中的跳转存根

    最近我反汇编了一个DLL 用c c 编写 发现代码段内有很多 跳转存根 这些存根除了跳转到 DLL 内的函数之外什么也不做 eg jmp foo jmp foo2 为什么编译器 Visual studio 2012 在二进制文件中包含这些函
  • Powershell 查询的升序和降序

    下面的查询将列出 powershell 中的 cmdlet get command CommandType cmdlet Group Object Property verb 因为我需要按降序对列数进行排序 然后按升序对列进行命名 以下查询
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 替换 CSV 文件中的引号和特殊字符的一些难题

    我在处理一些需要清理并加载到数据库中的 CSV 文件时遇到了一些难题 我相当擅长使用 PowerShell 但不擅长正则表达式和 csv 列操作 这是我遇到的问题 我正在使用的 CSV 文件中有一个 注释 字段 可以包含各种不同的字符 主要
  • PowerShell 脚本 ffmpeg

    作为一名优秀的 Windows 系统管理员 我终于开始学习 PowerShell 话虽这么说 我不知道我在做什么 惊讶 惊讶 我认为远离生产环境 在家里使用 PowerShell 对我来说将是一次很好的学习经历 最近 我开始使用 FFMPE
  • 如何在 Powershell 中自动对提示回答“是”?

    如何在 PowerShell 会话中输入 是 作为交互式问题的答案 我知道 在 Bash 中 Yes是在提示上回答 是 的工具 在我的情况下 我无法抑制提示 我正在运行的脚本停止于 如果您想继续 请回复 是 powershell 如何运行脚
  • Get-AzureStorageBlob 抛出找不到您的 azure 存储凭据

    我刚刚开始使用 Azure 在使用 PowerShell cmdlet 处理我的存储帐户时遇到问题 我已经创建了一个存储帐户并在该存储帐户中创建了一个容器 接下来 我安装了 Azure Powershell SDK 和命令让等 并导入了pu
  • Powershell v5.1 Invoke-RestMethod 并绕过代理

    我目前使用的是 Powershell V5 1 并且希望在 Invoke RestMethod 命令上绕过 Internet Explorer 代理 在 Powershell V6 中 有 NoProxy 选项 指示 cmdlet 将不使用
  • 通过 Powershell 拆分 9 GB csv 文件时遇到问题

    我有一个大约 9 GB 的大型 csv 文件 在 Powershell 中 我需要将其拆分为 10 MB 的块 问题是我需要保持行完整 因此每个分割文件在一行的末尾结束 并在下一行的开头开始 由于文件太大 我需要一种拆分它的方法 该方法不会
  • System.IO.FileInfo 的“目标”成员记录在哪里?

    PowerShell 命令行开关Get Item 如果应用于文件 则返回System IO FileInfo type PS C gt item get item c windows System32 atl dll PS C gt ite
  • Powershell脚本将多个远程地址添加到防火墙规则

    我正在尝试编写一个脚本 该脚本将循环遍历本地防火墙规则并更新远程地址表 这是我到目前为止所拥有的 它不起作用 应该很简单 所以不确定发生了什么 该脚本运行时没有错误 但实际上并没有更新任何内容 name Get NetFirewallRul
  • 如何使用批处理文件将多个命令插入到批处理文件中

    我正在制作一个批处理文件 我们称之为 Create bat 它将创建一个批处理文件 我们称之为 Created bat 该文件将在其中插入多个命令 其中一条命令如下 FOR F x IN tasklist NH FI IMAGENAME e

随机推荐

  • TryParse SSIS 忽略源行

    我有一个序列化代码 在该代码中存在一些数值 这些数值在解析时表示日期 For example 011756420176654 Note array index may be off Substring 1 2 01 Substring 3
  • 使用工作表 CodeName 并避免 .Select 和 .Activate

    在我的工作簿中 我经常需要使用它们来激活一些工作表CodeName then 搜索一些文本在那张纸上和使用单元格的行号或列号其中包含我正在寻找的文本 在这种情况下 我使用以下代码 Sheet16 Select Using codename
  • 为什么改变颜色或粗体的一个单元格的一部分不再起作用?

    In Excel 可以更改部分单元格的字体颜色 我已经尝试过下面的代码 更新后无法使用Excel 365对于价值 不是公式 Set ce cells 5 3 ce Characters 1 5 Font Color vbBlue 它应该更改
  • Ajax 请求并非向所有人开放

    我使用 CodeIgniter 创建了一个网络应用程序 我在应用程序中有几个地方使用了ajax 我想知道是否有一种方法可以停止对 ajax 控制器的直接访问和查询 而只允许处理源自页面的合法 ajax 请求 Thanks 是的 您可以毫无问
  • 在常规 UIViewController 上的 UITableViewCell 中滚动键盘上方的 UITextField

    我已经尝试过 StackOverflow 上的大部分示例 我也用过苹果的 我似乎遇到的问题是他们没有考虑 UITableView 中的 UITextField 我已经这样做过很多次了 但不是以这种方式 我有一个自定义 UITableView
  • std::async 函数串行运行

    当在 for 循环中使用 std async 和 launch async 时 我的代码在同一线程中串行运行 就好像每个异步调用在启动之前都会等待前一个调用一样 在 std async 引用的注释中 std 异步 如果 std future
  • Android应用程序中的云端点身份验证失败

    我第一次尝试在 Google Cloud Endpoints android 应用程序中以调试模式使用身份验证时遇到了问题 我这样设置凭据 credential GoogleAccountCredential usingAudience t
  • PHP < 5.3.0 中的 DateTime::createFromFormat

    我正在寻找与以下相同的功能日期时间 createFromFormat但我需要它在运行早于 v5 3 的 PHP 版本的环境中工作 基本上我需要提供一种格式 就像您使用的Date 函数 然后我需要根据该格式解析 验证字符串 如果字符串格式正确
  • 将 busybox 推入 Android 模拟器

    我已经下载了 mips android 的源代码并完成了 make 并让模拟器运行 我想将 busybox 推入模拟器中 我已经下载了静态编译的 busybox 二进制文件 我应该将其放置在哪个目录下 我应该如何将 busybox 推送到模
  • 高效的笛卡尔积算法

    有人可以为我演示一种比我当前使用的算法更有效的笛卡尔积算法吗 假设有一个 我环顾四周并用谷歌搜索了一下 但看不到任何明显的东西 所以我可能会错过一些东西 foreach int i in is foreach int j in js Pai
  • 如何在build.gradle文件中添加OJDBC6.jar?

    我正在应用程序中连接到 Oracle Db 并尝试使用 gradle build 来构建应用程序 我无法从 gradle 构建访问 OJDBC6 jar 请有人告诉我 我们如何将 ojdbc6 jar 添加到 build gradle 文件
  • Jelly Bean webview 应用程序无法完美响应 touchend 事件

    我的 webview 应用程序与早于 Jelly Bean 的 Android 版本中的 touchend 事件配合得很好 但在 Jelly Bean 中 touchend 事件并不可靠 特别是在可滚动的 div 上 有时不会触发 touc
  • ANDROID:使用 strings.xml 背后的主要思想是什么?

    有人请解释一下使用的主要思想是什么字符串 xml 我认为这对于多语言支持很有用 但我们如何为此组织它呢 如果我不想在 Android 应用程序中使用多语言支持 我是否需要它 这个想法是 它代表各种字符串的单个位置 因此您的代码不会充斥着字符
  • window.blur() 不适用于 Firefox 4

    我有一个功能 激活后会在当前浏览器窗口下打开一个新窗口作为弹出窗口 它在所有过去版本的 IE 和 FF 上都工作得很好 现在它已经停止工作了 显然 Mozilla 更改了 FF 4 的一项设置来防止这种情况发生 http support m
  • React-leaflet 创建自定义组件

    我想使用react leaflet 创建一个自定义组件 显示鼠标的实际位置 x y 但我不知道如何创建它 我发现react leaflet control但好像不是最新的 当然我看了api文档https react leaflet js o
  • Laravel phpunit 总是 404

    环境 PHP 7 0 macOS apache 代码是 public function testBasicExample this gt visit 运行 phpunit 结果是 1 ExampleTest testBasicExample
  • 单击按钮时如何为网站上的所有链接添加下划线?

    经过一个小时的尝试和错误创建一个简单的脚本后 我向您寻求帮助 我想创建一个button 点击后会为所有添加下划线样式a网站上的选择器 我已经写了一个简单的函数 但不幸的是它不起作用 有大量的a整个页面的选择器 所以我不会发出整个页面的代码
  • Visual Studio 项目依赖项

    我有一个 Visual Studio Net 解决方案 其中有许多项目 库 当我在自己的 PC 上本地工作时 没有问题 因为我倾向于重新编译那些我刚刚更改的库 并且所有内容都是同步的 问题是有时其他开发人员偶尔需要处理或查看我的代码 但在重
  • 复制并粘贴到 DataGridView 单元格中 (C#)

    我需要能够从一个应用程序复制一个或多个名称 使用普通复制命令 然后能够双击 DataGridView 中的文本单元格将数据粘贴到网格单元格中 关于如何实现这一目标有什么想法吗 我正在尝试最大程度地减少此功能的键盘使用 这实际上比您想象的要容
  • 将文件添加到文件夹时运行 .bat 文件的 Powershell 脚本

    我想监视 Windows 7 文件夹 并在将任何新文件添加到该文件夹 时运行 bat 文件 看来我应该能够使用安装在计算机上的 powershell 来执行此操作 我读过一些答案 例如this one但我还无法通过修改我所看到的内容来使任何