0

Windows バッチまたは PowerShell スクリプトで、日付と自動インクリメント番号を使用して .TXT ファイルの名前を変更したいと考えています。IE 20121004ABC.txt、20121004ABC_02.txt、20121004ABC_03.txt。. .

注意が必要なのは、これらのファイルがアップロード時に別のフォルダーに移動されることです。ファイルが同じ日付のアーカイブフォルダーにある場合、増分番号を継続したい...

SO 20121004ABC.txt、20121004ABC_02.txt、20121004ABC_03.txt がアップロードされ、C:\return\archive に移動されます。その日、4 つの新しい .txt ファイルが c:\return に配置されます。バッチ ファイルを実行して名前を付けたいと思います。 20121004ABC_04.txt、20121004ABC_05.txt、20121004ABC_06.txt、20121004ABC_07.txt

翌日、増分番号が再開されます, 20121005ABC.txt, 20121004ABC_02.txt これまでのところ:

setlocal enabledelayedexpansion
SET date=%date:~-4,4%%date:~-10,2%%date:~-7,2%
set /a count=0
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
ren %%a %date%_0!count!.txt
set /a count+=1
)

しかし、これは明らかに単なる始まりであり、私の問題の多くには答えません!

- アーカイブ フォルダから番号をインクリメントし続けません - ループ機能や他のファイルへの上書きなど、未知の問題がいくつかあると思います!

4

1 に答える 1

0

私が言ったように、私はコーディングと学習に不慣れです。私はおそらく厄介な問題を解決するためのテクニックを思いついたが、それはうまくいくようだ!他の誰かが同様の問題を抱えている場合に備えて共有したいと思います。また、誰かがこのコードに対して何か批評をしている場合は、建設的な批評と見なして、喜んで私の側のコードを改善してください。

また、役立つ場合と役に立たない場合がある別のポイントとして、SQLクエリを使用してtxtファイルをエクスポートしてから、Cygwinを使用します。

ありがとう!

c:\cygwin\bin\bash C:\s3\return\split.sh 'Shell Script to Split DB Export file into 25000 line Pieces
CD C:\s3\return\Returned_ARCHIVED 'Directory of Archive of Files To continue Counting from
for /f "tokens=*" %%a in ('dir /b /od') do set newest=%%a 'Newest File in Archive Directory
Set Name=%newest:~0,8% 'Take only the important part of the File name
Set /a FileNum=%newest:~12,2% 'Take only the incremental number part off the filename
SET date=%date:~-4,4%%date:~-10,2%%date:~-7,2%
If %date% == %Name% (set /a count=%filenum%+1) Else (set /a count=0) 

'if the latest file in the archive is from today date +1 ifnot Start at 0

cd C:\s3\return 'Directory if Files that need renamed
for /f "tokens=*" %%a in ('dir /b /od ABC_*') do (
ren %%a %date%ABC_0!count!.txt
set /a count+=1
)

PS:私にいくつかの評判を与えてください。そうすれば、彼らが私に提供してくれた助けに対して他の人に信用を与えることができます!

ありがとう!

于 2012-10-11T14:53:04.580 に答える