2017-04-03 20 views
-2

初めてのポスターと「非常に限られた経験」。私はPDF(約100,000 + - )を取り、それをソートすることを任されています。ファイル名は123456700.PDFです。これらのファイルを5,000個以下のファイルに分割したいと思います。したがって、ファイル名の6番目の数字に応じて、123455000(6番目の数字が5以上の場合)と123450000(6番目の数字が5未満の場合)というフォルダを作成したいと考えています。それから私はちょうど作成されたフォルダにそのファイルを移動したいと思います。私はこのタスクを達成する選択されたフォルダで実行することができたバッチ/スクリプトファイルが欲しいです。事前にすべての返信をありがとう!これは完全に機能していないですファイル名の6番目の数字に基づいてフォルダを作成し、フォルダを作成してそのフォルダにファイルを移動します

for %%f in (*.pdf) do { 
    set TEMP = %f:5% 
    if exists <your path>/%TEMP% <do nothing> 
    if not exists <your path>/%TEMP% mkdir <your path>/%TEMP% 
    <move file to this new directory 
} 

私は、一般的にバッチでは動作しませんが、私は、少なくともあなたが軌道に乗ることができますが、試してみて、この亀裂を与えるつもりだ

+0

は、我々はもう少し詳細を必要とします。すべてのファイル名が同じ長さか可変長であるか。たとえば、6番目の文字はいつも私たちが望むものになりますので、簡単にインデックスを作成できますか? –

+0

はいすべてのファイル名は同じ長さになり、6番目の文字がフォルダ作成の決定番号になります。 – koonce0313

+0

フォルダーが最大5,000ファイルで作成されているか、または6文字目の数字だけで作成されているかを明確に定義できますか。すでに100,000以上のファイルが存在し、ファイル名の長さが同じであるため、9999個のファイルしかシナリオに収まらないため、2つのフォルダーが必要になります。 _その他の90000+ファイルはどうなりますか?_ – Compo

答えて

-1

... /正しいが、それはあなたに何をすべきかの良い考えを与えるはずである。

+0

必ずしもバッチである必要はありません(私はそれが最も簡単だろうと思っていました)。速やかなご返信ありがとうございます! – koonce0313

0
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
CD /D "X:\path\to\pdfs" 
For %%A in (*.pdf) Do (
    Set "Filename=%%~nA" 
    If !FileName:~5,1! lss 5 (
    Set Folder=!FileName:~0,5!0000 
) Else (
    Set Folder=!FileName:~0,5!5000 
) 
    If not Exist "%Folder%" MkDir "%Folder%" 
    Move %%A "%Folder%" 
) 

編集サブストリング位置はゼロベースで、オフセットを変更しなければなりませんでした。 LotPingsと同様に

0

は答える:

@Echo Off 

Set "SrcDir=C:\Users\AName\Documents" 
Set "DstDir=C:\Users\AName\Documents\PDFs" 

If Not Exist "%SrcDir%\*.pdf" Exit/B 

For %%A In ("%SrcDir%\*.pdf") Do (Set "FName=%%~nA" 
    SetLocal EnableDelayedExpansion 
    If !FName:~-4! Lss 5000 (Set DstNum=0000) Else Set "DstNum=5000" 
    If Not Exist "%DstDir%\!FName:~,-4!!DstNum!\" (
     MD "%DstDir%\!FName:~,-4!!DstNum!") 
    Move "%%~A" "%DstDir%\!FName:~,-4!!DstNum!" 
    EndLocal) 
関連する問題