2016-03-30 4 views
-1

私はpowershellを初めて使用しています。スペースで区切られたファイルのリストを取得し、それぞれの現在のディレクトリに新しいファイルを作成する機能を作成しようとしています。次に、lsコマンドを実行して、新しいファイルが追加されたことを確認するディレクトリを表示します。ここで私はそれが動作していないものです:Powershellは複数のファイルを作成するためにLinux touchをエミュレートします

function touch{ 
    params([String[]] $files) 
    ForEach($file in $files){ 
    New-Item $file 
    } 
ls 
} 

これは動作していないようです。どんな助けもありがとう。

答えて

1

params()という名前のものはありません。param()です。 New-Itemは、作成するファイルごとにFileInfoオブジェクトを返すので、Out-Nullも追加しました。それがなければ、新しいファイルは2回表示されます:1回はNew-Itemから、1回はlsから1回です。

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が欠落している場合は、test\test3.txtのようなパスを使用する場合、ファイルが存在するかどうかは、エラーになりますのでご注意ください。 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 
+0

'param()'の代わりに 'args'を使うべきですか?私はカンマ、引用符、または "ファイル"を付けずにこれを呼び出そうとしています。このようなもの: 'touch index.html users.html' –

+0

はい、更新された回答を参照してください。しかし、PowerShellでのやり方と同じように、パラメータとコンマ区切り(PowerShellで配列を定義する方法)を使用することをお勧めします。あなたは言語を学び、他の何かを模倣しようとしないでください –

-1

をもともと述べたように、私は単純に入力することができるようにLinuxのtouchコマンドをエミュレートしたい:

touch file.txt file2.txt

をここで私は終わったものです最大:

function touch(){ 
    foreach($file in $args){ 
    New-Item -Path $file | Out-Null 
    } 
    ls 
} 

lsコマンドは、linux touchコマンドを超えて追加されたものです。

+0

'ls'は' Get-ChildItem'のエイリアスですので、Frodeの例のようにスクリプトで 'Get-ChildItem'を使うほうがずっと良いです。 – Bluecakes

関連する問題