在 Powershell 中使用 if 语句移动文件

Moving files with if statements in Powershell

我正在尝试执行以下操作(我已经写下了我能够解决的问题(第 3 行和第 4 行),然后在大写的其他行中描述了我想做的事情,在主题标签中附加评论) 今天第一次使用Powershell所以见谅! 我猜 IF 部分需要都在一条线上吗? 每条线独立运行……对吗?或者不是,如果它全部在一个脚本中?

CHECK FOR .TXT FILES IN DIRECTORY IF MULTIPLE, OPEN EXPLORER WINDOW TO FOLDER (If count of *.txt in folder is > 1, open directory...?)
IF ONLY ONE .TXT EXISTS (If count of *.txt in folder is = 1)
Move-Item <dir1*.txt> <dir2> #Move item from directory to new directory
<dir> #Execute program, does this need 'execute' or some parameter?
ELSE END #don't attempt to run the program if nothing has been moved

学习语言的第一天既令人困惑又非常非常困惑。

我在这里向你扔一块骨头。 :D

第 1 步:您需要弄清楚如何找到文件夹中的所有文本文件。您可能知道如何在 CMD 中执行此操作,对吧?命令 "dir" 将列出您目录中的所有垃圾,对吗?你猜怎么着?大多数命令行 cmdlet 也适用于 PowerShell。他们被称为别名。

获取目录内容的本机命令是 Get-ChildItem,但它有一些别名,其中之一是 dir。如果您键入 Get-ChildItemdir,您将得到相同的结果。

假设您只想获取 "MyDirectory" 中的所有文本文件。使用通配符“*”后跟“.txt”,如下所示:

Get-ChildItem "MyDirectory\*.txt"

这将为您提供该目录中所有 .txt 文件的列表。但是你也有一个 if 语句你想使用对吗?它基于该目录中 .txt 文件的数量?让我们认识变量。

使用 $ 和名称 = 声明一个变量,然后声明您希望该变量定义的内容。由于您想计算文本的数量,并且上面的命令提取了该信息,我们可以在变量中使用该信息来计算。

$Stuff = Get-ChildItem "C:\MyDirectory\*.txt"

现在我们只需要它来计算变量的结果。为此,我们调用变量并告诉它计算结果,如下所示:

$Stuff.count

轰!有你的号码。我想你理解 IF 语句,所以我们就说如果这个数字大于 1,你想打开目录。否则你想移动项目并启动程序。

If($Stuff.count -gt "1"){
   Invoke-Item "C:\MyDirectory"
}
Else{
   Move-Item "C:\MyDirectory\*.txt" "C:\MyOtherDirectory\" -Force
   Invoke-Item "C:\ProgramDirectory\program.exe"
}

If 语句后跟圆括号 () 中的条件,然后是大括号 {} 中的操作。标志(或运算符)-gt 表示 "greater than"。 Invoke-Item 非常明显:如果您尝试通过 mouse/keyboard 调用它来打开该项目,它会调用它后面的任何项目以及您的计算机将执行的任何操作。我想你可以弄清楚 -Force 标志的作用。

现在大家齐心协力,这是您的脚本。按照您认为合适的方式进行更改。

$Stuff = Get-ChildItem "C:\MyDirectory\*.txt"

If($Stuff.count -gt "1"){
   Invoke-Item "C:\MyDirectory"
}
Else{
   Move-Item "C:\MyDirectory\*.txt" "C:\MyOtherDirectory\" -Force
   Invoke-Item "C:\ProgramDirectory\program.exe"
}

欢迎使用 PowerShell!这是你的免费赠品。请学习!查看 "Hey! Scripting Guy!" 博客并使用 TechNet 中的 CRAP 寻求帮助!

尽情享受吧!