2016-05-09 10 views
1

私はPowershellスクリプトにはかなり新しく、特定のパスからファイルをコピーして現在の日付で作成された新しいフォルダに貼り付けるスクリプトを作成する必要があります。これは私がこれまでに得たものです。Powershellスクリプトを使用して新しいフォルダにファイルをコピーする

New-Item -Path "c:\users\random\desktop\((Get-Date).ToString('yyyy-MM-dd'))" -ItemType Directory 

copy-item c:\users\random\desktop\rand.txt 'c:\users\random\desktop\((Get-Date).ToString('yyyy-MM-dd')) 

私はこのスクリプトを実行すると、それは代わりに、今日の日付の((Get-Date).ToString('yyyy-MM-dd'))というディレクトリが作成されます。

このスクリプトを実行するときは、現在の日付のディレクトリを作成し、そのファイルを貼り付ける必要があります。だから、もし私が5日間1日1回それを実行するならば、それぞれのファイルと5つの異なるフォルダを作成する必要があります。どんな助けも大歓迎です。

答えて

0

あなたはブラケットの前にドル記号を欠場

"C:\ユーザーはランダム\デスクトップを\ ** $ **((ゲット-日).ToString( 'YYYY-MM-DD'))"

+0

"c:\ users \ random \ desktop $((Get-Date).ToString( 'yyyy-MM-dd'))" – CaMeL

0

GetDateを格納する変数を作成し、それを文字列に変換します。

$currentdate = date $currentdate2 = $currentdate.ToString("yyyy-MM-dd")

したがって、あなたのコードのフォルダのパスがされる 'C:ランダム\デスクトップ\の$のcurrentdate2 \ \ユーザーの

+0

ちなみに、これはサーバー障害ではないはずですか? – Ponilz

1

あなたは、コードのこれらの2行で保つために探している場合は、ラップする必要がありますGet-Date部分は$()です。これは二重引用符内の文字列を使用する前にPSにそのコードを解決させるように指示します。 enter image description here

だからあなたのコードは次のようになります。あなたのスクリプトは、これまで深夜のマイクロ秒以内に実行された場合

New-Item -Path "c:\users\random\desktop\$((Get-Date).ToString('yyyy-MM-dd'))" -ItemType Directory 
copy-item c:\users\random\desktop\rand.txt "c:\users\random\desktop\$((Get-Date).ToString('yyyy-MM-dd'))" 

ただし、1つの欠陥を持っている可能性があります。各コマンドは、別の日になるだろう。

より良い方法は、変数の日付を取得して、両方のコマンドでそれを使用することです。

$cDate = Get-Date -format yyyy-MM-dd 
$NewPath = "C:\Users\random\desktop\$cDate" 
New-Item -Path $NewPath -ItemType Directory 
Copy-Item c:\users\random\desktop\rand.txt $NewPath 

これにより、実行時に真夜中を過ぎた場合に同じ日付値が得られるようになります。しかし、それはおそらく問題になることはないでしょうが、それは安全であることを傷つけません。

関連する問題