0

外部サーバーからローカル サーバーに常にファイルをコピーします。ファイル名の形式は次のとおりです。

Example 1     Invoice MM500780 10 26 2012 3 52 15 PM.PDF
Example 2     Invoice PS100679-02 10 30 2012 9 31 35 AM.PDF
Example 3     Return RTN001116 10 26 2012 8 59 56 AM.PDF

2 番目のスペース (日付と時刻を表す) の後の文字を削除して、すべてのファイルの名前を変更したいと思います。ファイル名は次のとおりです。

Example 1     Invoice MM500780.PDF
Example 2     Invoice PS100679-02.PDF
Example 3     Return RTN001116.PDF

とにかく、powershell ファイルを作成して、タスク マネージャー経由で実行できますか?

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

4

4 に答える 4

2

試す:

dir c:\mydir -filter *.pdf | 
% {rename-item -path $_.fullname -newname ( ($_.name.split('')[0..1] -join ' ' ) + $_.Extension )}
于 2012-11-02T20:57:45.747 に答える
1

Christian の投稿に続いて、これは正規表現パターン マッチを使用するように適合された彼のコードです。

[regex]$regex = "\A\S*[\s]\S*"

dir c:\mydir -filter *.pdf | % {rename-item -path $_.fullname -newname ($regex.matches($_.BaseName)[0].value + $_.Extension )}

正規表現を変更して命名パターンを変更します。適切なパターンを使用すると、元の名前の任意の部分を引き出して、新しい名前として使用できるはずです。パターンは、\A 文字列の開始、\S 非空白文字 (* 任意の数字)、\s 空白、\S 非空白文字 (* 任意の数字) です。

于 2012-11-03T11:39:42.963 に答える
0

あなたが探しているのは、これらの線に沿ったものだと思いますか?

PowerShell で文字列を分割し、各トークンで何かを行う

基本的に、ファイル名をスペースで分割し、ファイルの名前を最初と 2 番目のトークンにあるものに変更します。

于 2012-11-02T20:39:59.907 に答える
0

このpowershellワンライナーは、必要なことを行う必要があります.

Get-ChildItem | %{$splitName = $_.Name.Split(" ", 3); if($splitName.Length -gt 2) {$finalName = [string]::Join("",[string]::Join(" ",$splitName[0],$splitName[1]),$_.Extension); Rename-Item -Path $_.FullName -NewName $finalName}}
于 2012-11-02T20:57:46.300 に答える