問題タブ [rename-item-cmdlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1090 参照

powershell - ファイルの内容に基づいて1行のPowerShellバッチで名前を変更

特定のテキストを含む EDI テキスト ファイルのリストがあります。現在、カスタム スクリプトでそれらを SQL テーブルに変換するには、ファイル名で X12 ファイル タイプを確認できる必要があります。ファイルをテーブルに入れるために SQL スクリプトを使用しているため、このソリューションは 1 行のソリューションである必要があります。検索するフィールド ターミネータとファイル タイプを指定するクライアント ファイルの定義テーブルがあるので、後でこれらの値を 1 行のソリューションに置き換えて、個別に実行します。私は現在、現在および将来の互換性を最大限に高めるために、Powershell (v.3) を検討しています。また、私は Powershell をまったく初めて使用し、このフォーラムの投稿に基づいてスクリプトを生成しました。

ファイルの例

  • t.text.oxf.20170815123456.out
  • t.text.oxf.20170815234567.out
  • t.text.oxf.20170815345678.out
  • t.text.oxf.20170815456789.out

ファイル内で検索する検索文字列: (同じファイル内で n 回重複する可能性のある EDI X12 ファイル タイプを一意に検索するため)

  • ST*867
  • ST*846
  • ST~867
  • ST~846
  • ST|867
  • ST|846

これは私がこれまでに持っているもので、whatifパラメーターで何もしていないことを示しています:

拳の部分:

(Get-ChildItem .\ -recurse | Select-String -pattern 'ST~867' -SimpleMatch).Path

名前を変更するために入力する必要があるパスのリストを取得するだけです

| の後の 2 番目の部分 パイプ:

Foreach -Begin {$i=1} -Process {Rename-Item -LiteralPath $_ -NewName ($_ -replace '\.out','.867.out' -f $i++) -whatif}

おそらくそのリストをループし、EDIタイプをファイルの最後に追加してファイルの名前を変更します。私は変更なしで試し'out$','867.out'ました。

現在のエラー:

  • 最初の部分は、おそらくファイルに複数のトランザクション セット ヘッダーがあるため、重複したパス要素を示しています。強制的に一意にする方法はありますか?
  • このコマンドはエラー (赤いテキスト) を表示しませんが、whatif パラメーターを使用すると、ファイルの名前が変更されないことが示されます (エラーなしで実行してみました)。
0 投票する
2 に答える
1331 参照

powershell - Powershell-名前を変更します。ファイル名に数字を挿入

Powershell を使用してフォルダー ディレクトリの名前を一括で変更しようとしています。

ab_xxxxx_xxxxx_xxx (x は数字) 形式のフォルダーが多数あります。名前を ab_xxxxxxx_xxxxxxx_100xxx に変更したいと考えています。

Rename Item を Replace コマンドで使用しようとしましたが、_ ごとに 100 が追加されます

元。Get-ChildItem -Path ab_ _ _* -ディレクトリ | ForEach-Object -Process { Rename-Item -Path $ .Name -NewName ($ .Name -replace "_", "_100") }

* ワイルドカードも使用してみましたが、それを新しいフォルダー名に追加しただけです。

どんな助けでも大歓迎です