2016-11-11 3 views
-1

「Old」と「New」の2つのフォルダがあります。 'Old'のファイルのほとんどは 'New'にコピーされています。ただし、 'Old'と 'New'のサブフォルダの構造が異なるため、 'Old'のファイルのファイルパスは 'New'のコピーと大きく異なります。フォルダ内のすべてのファイルのファイルパスを印刷するPowershellスクリプト

私は'New'でそのファイルを検索し、各ファイルの古いファイルパスと新しいファイルパスをテキストファイルに書き込みます。

私はこれを手動で行うように割り当てられていますが、 PowerShellの新機能で、どのコマンドレットが私の仕事に役立つかを理解するのが難しくなっています。

私はどのような種類のファイルもありますガイダンス。ありがとう。

「のForEach(のGet-ChildItemコマンドレット-recurseで$ファイル){:
+0

ような何かを試してみてください$ file.fullname | out-file output.txt} ' ただし、これは1ファイルだけのパスを書き込むだけです。 –

+0

'' foreach($ file in $(gci -recurse)){$ file.fullname >> output.txt} ''を実行するか、 '' Out-File-append''を使うことができます。そこで何が起こるのかというのは、ファイルに書き込んだものを毎回上書きするため、1つのファイルしか出力しないからです。 – 4c74356b41

+0

ありがとうございました!私は今、各ファイルの名前を取得し、C:\ Oldでそれを検索し、パス(fullname)をoutput.txtに追加する方法を見つけようとしています。 –

答えて

0

は、私は、テキスト文書に「新規」内のすべてのファイルのフルネーム/パスを印刷しようとするために、これを使用し、この

#list old files 
$patholdfile="c:\temp" 
$listoldfile=Get-ChildItem $patholdfile -File -Recurse | select Name, FullName 

#list new files 
$pathnewfile="c:\temp2" 
$listnewfile=Get-ChildItem $pathnewfile -File -Recurse | select Name, FullName 

#extract liste file old and name and search all file in newlist 
[email protected]() 
foreach ($currentfile in $listoldfile) 
{ 
    $resultsearch+=New-Object psobject -Property @{ 
    Name=$currentfile.Name 
    OldPath=$currentfile.FullName 

    #if you want the firt founded uncomment this and comment after 
    #NewPaths=($listnewfile | Where {$_.Name -eq $currentfile.Name} | select FullName -First 1).FullName 

    NewPaths=($listnewfile | Where {$_.Name -eq $currentfile.Name} | select FullName).FullName -join "~" 
    } 

} 

#export result in csv file 
$resultsearch | select name, OldPath , NewPaths | export-csv -Path "c:\temp\result.txt" -NoTypeInformation 
関連する問題