在 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-ChildItem
或 dir
,您将得到相同的结果。
假设您只想获取 "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 寻求帮助!
尽情享受吧!
我正在尝试执行以下操作(我已经写下了我能够解决的问题(第 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-ChildItem
或 dir
,您将得到相同的结果。
假设您只想获取 "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 寻求帮助!
尽情享受吧!