Powershell脚本“ $ dirs”

时间:2019-10-08 20:42:26

标签: powershell

因此,我没有任何编程语言的学位或任何正式培训,但是我的工作是让我慢慢地学习SQL的基础知识,而现在我被赋予了一项新的工作任务。该任务的前负责人运行了powershell脚本来组合和重命名PDF。我得到了这一切的宏观水平。该脚本在父目录中设置了一个循环,进入所有子目录,然后使用PDFtk Server将PDF串联在一起,然后将合并的PDF重命名为它们在其中命名的子目录。但是,我无法弄清楚如何指定目录(我认为这是术语)。目前,我只能在Console2所在的文件夹中成功运行powershell脚本。

$path = Split-Path -parent $MyInvocation.MyCommand.Definition 

Function mergeFiles 
{ 
# Loop through all directories 
$dirs = dir $path -Recurse | Where { $_.psIsContainer -eq $true }
$cmd = 'C:\Program Files (x86)\PDFtk Server\bin\pdftk.exe'
$In1 = 'A.pdf'
$In2 = 'B.pdf'
$Out1 = 'C.pdf'
Foreach ($dir In $dirs) 

这是合并文件功能的第一部分。有人可以帮我弄清楚如何识别特定的“目录”吗? (就像我的桌面上的文件夹中有PDF一样)

1 个答案:

答案 0 :(得分:2)

填充目录的位置,它将基于脚本的位置(基于此行)进行搜索:

$path = Split-Path -parent $MyInvocation.MyCommand.Definition 

$MyInvocation.MyCommand.Definition是正在运行的脚本的完整路径,命令Split-Path -parent将返回父目录。您可以仅将该行更改为所需的位置,即:

$path = 'C:\Users\JC\Desktop\PDF'

,但是您可能不想硬编码该路径。您要做的是将路径添加为脚本的输入参数。为此,请将以下内容添加到脚本顶部:

PARAM($path)

然后,当您调用脚本时,只需传递您感兴趣的路径:

.\theScript.ps1 C:\Users\JC\Desktop\PDF

然后,您可以获取更高级的信息并指定默认值,例如,如果您希望默认值是运行脚本的位置:

PARAM($path = '.')