我是PowerShell的新手,我正在尝试创建一个可以获取空格分隔文件列表的函数,并为当前目录中的每个文件创建一个新文件。然后执行ls
命令查看目录以确认已添加新文件。以下是我的工作:
function touch{
params([String[]] $files)
ForEach($file in $files){
New-Item $file
}
ls
}
这似乎不起作用。任何帮助将不胜感激。
答案 0 :(得分:1)
没有任何名为params()
,它是param()
。我还添加了Out-Null
,因为New-Item
会为其创建的每个文件返回一个FileInfo
- 对象。没有它,新文件将显示两次:一次来自New-Item
,一次来自ls
。
function touch{
param([String[]] $files)
ForEach($file in $files){
New-Item -Path $file | Out-Null
}
ls
}
touch -files "test.txt", "test2.txt
Directory: C:\Users\frode\TouchFolder
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 30.03.2016 20:56 0 test.txt
-a---- 30.03.2016 20:56 0 test2.txt
请注意,如果文件存在,或者如果缺少子文件夹test\test3.txt
,则会使用test
之类的路径,从而导致错误。您可以使用New-Item -Path $file -Force
强制覆盖和子文件夹创建。
要使用参数,请尝试:
function touch{
ForEach($file in $args){
New-Item -Path $file | Out-Null
}
Get-ChildItem
}
touch index.html users.html "test 3.txt"
Directory: C:\Users\frode\TouchFolder
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 30.03.2016 21:19 0 index.html
-a---- 30.03.2016 21:19 0 test 3.txt
-a---- 30.03.2016 21:19 0 users.html
答案 1 :(得分:-1)
如前所述,我想模拟Linux touch
命令,以便我可以输入:
touch file.txt file2.txt
以下是我最终的结果:
function touch(){
foreach($file in $args){
New-Item -Path $file | Out-Null
}
ls
}
ls
命令是通过linux touch
命令添加的所有命令。