2011-10-20 10 views
1

ファイルをあるフォルダから別のフォルダに移動する必要があります。移動するファイルの数を選択できるようにする必要があります。次に、ソースフォルダにファイルがなくなるまでループします。ループの間に、それは休憩を取る必要があります。私は離れているかもしれない。 は、これまでのところ、私はこのようなスクリプトだ:事前にPowershellのプロンプトからの入力を記憶するために変数や関数を使用するにはどうすればよいですか?

$FileCount = (ls $env:C:\users\jenstmar\desktop\*.*).count 


Function Source {gci -path (Read-Host -Prompt 'Set Source') -exclude PowerFlyt |} 
Function FileNumber {Get-Random -Count 4 (Read-Host -Prompt 'Set number of files to move a time') |} 
Function Destination {mi -Destination (Read-Host -Prompt 'Set Destination') -exclude PowerFlyt.ps1 |} 



do 
{ 
Source | 
FileNumber | 
Destination | 
    sleep -sec 20; .\PowerFlyt.ps1 
} 
while($FileCount -gt 0) 

おかげで、すべての

+1

これは問題ではありません。あなたのスクリプトを試しましたか?どのような問題が発生しましたか? –

+0

質問はタイトルにあった。私は今問題を解決しました。 –

+0

Read-Host -prompt "それはどうなるでしょうか(はい/いいえ)" 文字列がはいならばフィルターしなければなりません –

答えて

3

まず、関数は、マクロやコードにインライン化されている何かのようではありません。関数が呼び出され、パイプラインに値を返します。

Source | 
FileNumber | 
Destination | 

のようなだからあなたの使用状況や{-exclude PowerFlyt GCI -path(読み取りホストを-prompt 'ソースの設定')|}

機能ソースのような関数を定義する

ますうまくいかない。後続のパイプなしで機能を変更してください(|)。

変数で読み取り値を保存し、読み取りホストから変数を渡すために:

Function Source { 
$script:source = read-host "set source" 
gci -path $source -exclude PowerFlyt 
} 

あなたは今、スクリプト内で他の機能に$script:sourceにアクセスすることができます。他の変数についても同じ操作を行います。

1

私はそれを理解しました。最終結果は次のようになりました。

$Source = (Read-Host -Prompt 'Set Source') 
$FileNumbers = (Read-Host -Prompt 'Set number of files to move a time') 
$Destination = (Read-Host -Prompt 'Set Destination') 

do 
{ 
$FileCount = (ls $Source).count 
gci -path $Source -exclude <NameOfScript.ps1> | 
Get-Random -Count $FileNumbers | 
mi -Destination $Destination 
sleep -sec 5; 
} 
while ($FileCount -gt 1) 

ご協力いただきありがとうございます。

+0

答えを受け入れられた答えとしてマークする必要があります。 – Tom

関連する問題