我正试图将多个Excel文件拖放到批处理文件中,并将每个Excel文件处理到PowerShell中。
我有它的大部分下来,但问题是我不能得到的filename只和不能通过变量“DroppedFiles”作为一个数组。
批量文件
@echo off
SET ScriptDirectory=%~dp0
SET ScriptFile=%ScriptDirectory%Tool.ps1
for %%I in (%*) do (
set DroppedFiles=%%I
)
powershell.exe -ExecutionPolicy Bypass -File "%ScriptFile%" "ScriptDirectory" "DroppedFiles"
Tool.ps1脚本
param($env:ScriptDirectory=$args[1],
$env:DroppedFiles=$args[2])
$env:ScriptDirectory
$env:DroppedFiles
# Get the Files that I ONLY Dragged onto the Batch File
$Input = Get-ChildItem $PWD | Where {$_.Name -match $env:DroppedFiles}
1条答案
按热度按时间kxeu7u2r1#
按如下所示重写批处理文件:
重写PowerShell脚本,如下所示:
上面的代码简化了你的代码,并绕过了它的问题,特别是:
SET ScriptDirectory=%~dp0
)for /?
在单个变量中迭代地构建一个 * 列表 *(这只适用于 * 延迟的 * 变量扩展)。%...%
("ScriptDirectory"
,"DroppedFiles"
)中没有封装定义的变量$input
变量用于 * 自定义 * 目的。$args
变量 * 而不是正式声明参数。$env:
(环境变量)作为 parameter 变量。