我试图做以下事情(我已经写过我能够解决的问题(第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
答案 0 :(得分:1)
第一天学习一门语言既令人困惑又非常混乱。
我在这里扔你的骨头。 :d
步骤1:您需要弄清楚如何查找文件夹中的所有文本文件。您可能知道如何在CMD中执行此操作,对吧?命令&#34; dir&#34;会列出你目录中的所有垃圾,对吧?你猜怎么着?大多数命令行cmdlet也在PowerShell中工作。他们称之为别名。
获取目录内容的本机命令是Get-ChildItem
,但它有一些别名,其中一个是dir
。如果您输入Get-ChildItem
或dir
,您将获得相同的结果。
所以,让我们说你想要在&#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寻求帮助!
享受!