4

次のコマンドを使用して、ディレクトリの内容を txt ファイルに出力しています。

$SearchPath="c:\searchpath"
$Outpath="c:\outpath"

Get-ChildItem "$SearchPath" -Recurse | where {!$_.psiscontainer} | Format-Wide -Column 1'
| Out-File "$OutPath\Contents.txt" -Encoding ASCII -Width 200

これを行うと、必要な情報が含まれたtxtファイルになりますが、必要のない多数の改行が追加され、出力が読みにくくなります。

これは次のようになります。

    c:\searchpath\directory

name of file.txt

name of another file.txt


    c:\searchpath\another directory

name of some file.txt

これにより、多くのスクロールが必要な txt ファイルが作成されますが、実際の情報はそれほど多くなく、通常は 100 行よりもはるかに少なくなります。

次のようにしたいと思います。

  c:\searchpath\directory
nameoffile.txt
  c:\searchpath\another directory
another file.txt

これは私がこれまでに試したことであり、機能していません

$configFiles=get-childitem "c:\outpath\*.txt" -rec
foreach ($file in $configFiles)
{
(Get-Content $file.PSPath) | 
Foreach-Object {$_ -replace "'n", ""} | 
Set-Content $file.PSPath
}

'r も試しましたが、どちらのオプションでもファイルは変更されません。

別の試み:

Select-String -Pattern "\w" -Path 'c:\outpath\contents.txt' | foreach {$_.line}'
| Set-Content -Path c:\outpath\contents2.txt

最後に Set-content なしでその文字列を実行すると、ISE で必要なとおりに表示されますが、最後に Set-Content を追加するとすぐに、不要な場所で再びキャリッジ リターンが発生します。彼ら。

いくつかのキャリッジ リターンといくつかのタブを含むテキスト ファイルを作成した場合、これまで使用してきたものと同じ -replace スクリプトを使用しますが、txt ファイルでt to replace the tabs, it works perfect. Butr とn do not work. It's almost as though it doesn't recognize them as escape characters. But if I addr と `n を使用してから、スクリプト、それはまだ何も置き換えません。それをどうするか分からないようです。

4

3 に答える 3

4

Set-Contentデフォルトで改行を追加します。Set-Content質問の最後の試行でbyに置き換えるOut-Fileと、必要なファイルが得られます。

Select-String -Pattern "\w" -Path 'c:\outpath\contents.txt' | foreach {$_.line} | 
Out-File -FilePath c:\outpath\contents2.txt
于 2012-05-26T08:54:35.570 に答える
1

'r (アポストロフィ) ではなく、バックティックです: `r. これは、US キーボード レイアウトのタブ キーの上にあるキーです。:)

于 2012-05-25T18:09:15.610 に答える
1

を使用して、これらすべての空行を簡単に回避できますSelect-Object -ExpandProperty Name

Get-ChildItem "$SearchPath" -Recurse | 
    Where { !$_.PSIsContainer } |
    Select-Object -ExpandProperty Name | 
    Out-File "$OutPath\Contents.txt" -Encoding ASCII -Width 200

...フォルダ名が必要ない場合。

于 2012-05-25T18:21:42.870 に答える