マスター ディレクトリに存在するファイルとまったく同じ名前で、USB スティック内のテキスト/偽のファイルのディレクトリを再生成したいと思います。
マスター ディレクトリは 1 テラバイトのドライブ上にあり、USB スティックに収まるには大きすぎます。しかし、USB スティックを使用しているときに、他の場所から重複ファイルをダウンロードするときにファイル名を衝突させたいのです。つまり、何かをダウンロードしようとすると、「... という名前のファイルが既に存在します」というメッセージが表示されます。
マスター ディレクトリを新しい追加ファイルで更新し、偽のファイルの結果のファイル構造を手動で USB スティックに移動するときに、このスクリプトを手動で実行してもかまいません (比較的高速である限り)。
少なくとも 3 レベルのディレクトリ構造があります。txt ファイルを使用した簡単なテスト ディレクトリ構造と、(主に) pdf の実際の構造をまとめました。出力は次のようになりますtree /a /f . > list.txt
。
Folder PATH listing for volume Windows
Volume serial number is 00C7-D795
C:\USERS\USER\DESKTOP\TEST
| list.txt
| script.bat
| script.txt
|
\---Top_Lvl
| file-2nd-1.txt
| file-2nd-2.txt
| file-2nd-3.txt
|
+---2nd_Level-1
| file-3rd-1.txt
| file-3rd-2.txt
| file-3rd-3.txt
|
+---2nd_Level-2
| | file-3rd-4.txt
| | file-3rd-5.txt
| | file-3rd-6.txt
| |
| \---3rd_Level-1
| file-4th-1.txt
| file-4th-2.txt
|
\---2nd_Level-3
file-3rd-7.txt
ヘッダーの書き方がわかりません。PDF リーダーで .pdf 拡張子のファイル (実際にはテキスト ファイル) が表示されるようにするには、どうすればよいでしょうか。これは本当にすばらしいボーナスです。また、ファイルのサイズをテキスト出力に出力するコマンド (私の知る限り、attrib は機能しません) が見つかりません。他の場所で調べなくても、偽のファイルをクリックするだけで実際のファイルのサイズがわかると便利です。
潜在的な部分的な解決策?
私はこれを見つけました:
Windows / ファイル名を含むサブフォルダの txt ファイルを作成する
しかし、混乱を招くようで、ディレクトリのレベルは 1 つしか処理されません。
そして、それを書き直したり修正したりすると、一度は動作しましたが、その後動作しなくなりました。
@echo off
for /dd %%D in (*) do (
cd %%~nxD
tree /a /f > ..\%%~nxD.txt
cd ..
echo %%~nxD > dir_info.tmp
for /f "skip=3 delims=*" %%a in (%%~nxD.txt) do (
echo.%%a >> dir_info.tmp
)
copy /y dir_info.tmp %%~nxD.pdf
del /f /q dir_info.tmp
)
結果はデスクトップにドロップされるのではなく、実行されているディレクトリ内にダンプされます (マスター ディレクトリ ドライブにアクセスするために複数のコンピューター/アカウントを使用する場合、ハードコーディングではなく、デフォルトのデスクトップにドロップする方法がわかりません)。また、USB スティックを指定できるかどうかはわかりません。これは、他に何が接続されているかによって常に変わる可能性があるためです。
また、私は古い Windows システムをよく使用するので、バッチ ファイルを検討していました。これを行うアプリがあれば、ホイールを再彫刻する代わりに、ぜひ検討します。
@eris は Robocopy を提案しましたが、RichCopy と呼ばれるものもあります。
https://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight
しかし、これらのアプリケーションは実際のマスター ディレクトリの複製 - マスター ドライブ (および前述のとおり、動作中の USB スティック) のどちらにも、それほど多くの空きストレージ領域がありません。
私の説明が不十分だったようです。拡張子を含むすべてのファイル名 (およびサイズなどの実際のファイルの最適な情報) を含むシャドウ ディレクトリを作成しようとしていますが、スペースは最小限です。実際のスペース消費量は 1 メガバイトまたは 3 メガバイト (すべてのファイルとディレクトリが ~block を使用するため) で、数百ギガバイト (例: 50 MB のファイル、1 MB のファイル、832 K のファイル、10 MB のファイル、15 MB のファイル) ではないと推測しています。
コマンドラインを正しく動作させることができれば、robocopy が私の求めているもののようです。
ROBOCOPY Top_Lvl Shadow /CREATE
サブディレクトリは作成しません。
答え1
@eris は正しい考えを持っていました。
コマンドラインから:
robocoy *Top_Lvl* *Shadow* /create /mir
マスター ディレクトリをミラーリングする長さゼロのファイルを含むシャドウ ディレクトリ構造を作成するようです。残っているのは、これをドライブ上で実行する方法を見つけることだけです。これは、ソースと宛先のパスを見つけるだけの簡単な作業です。ただし、ファイルとディレクトリを上書きする前に自動的にエラーが発生しないため、注意して使用する必要があります (最適ではないと思います)。
情報 (元のファイルのサイズ) も提供するファイルを作成するという追加作業は実行しませんが、現時点では十分なソリューションです。