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

时间:2015-11-13 11:33:25

标签: powershell powershell-v2.0

我试图做以下事情(我已经写过我能够解决的问题(第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

1 个答案:

答案 0 :(得分:1)

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

我在这里扔你的骨头。 :d

步骤1:您需要弄清楚如何查找文件夹中的所有文本文件。您可能知道如何在CMD中执行此操作,对吧?命令&#34; dir&#34;会列出你目录中的所有垃圾,对吧?你猜怎么着?大多数命令行cmdlet也在PowerShell中工作。他们称之为别名。

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

所以,让我们说你想要在&#34; MyDirectory&#34;中获取所有文本文件。只要。使用通配符&#34; *&#34;其次是&#34; .txt&#34;像这样:

Get-ChildItem "MyDirectory\*.txt"

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

使用$和名称=声明变量,然后声明要为该变量定义的内容。由于您要计算文本数量,并且上面的命令会提取该信息,因此我们可以将变量中的信息用于COUNT。

$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表示&#34;大于&#34;。 Invoke-Item非常明显:如果您尝试通过鼠标/键盘调用该项目来打开该项目,它会调用随后的任何项目。我想你可以弄明白-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!那是你的免费赠品。请学习!看看&#34;嘿!脚本专家!&#34;博客并使用TechNet中的CRAP寻求帮助!

享受!