私は DOS バッチ ファイルに少し慣れていないので、問題を解決する方法について頭を悩ませています。
私がしなければならないこと: 大規模なネストされたソース フォルダー構造があり、ここにあるとしましょう:
C:\dir1\dir2\dir3\file.txt
また、ルートの一部が異なりますが、ミラー化された宛先構造があります。
x:\dirA\dirB\dir1\dir2\dir3\file.txt
私の現在のバッチは、ソース構造内のすべてのファイルを宛先フォルダーにコピーし、フォルダー構造を維持します。これは私が望むものです。
問題:
私のスクリプトの意図は、フォルダーを上記のソース構造からバット ファイルにドラッグし、ファイルを宛先にコピーさせることです。私がやりたいことは、ユーザーがソースディレクトリからフォルダーをドラッグできるようにすることです。たとえば/dir2
、そのすべてのサブフォルダー/ファイルをバッチファイルにドラッグし、コンテンツを宛先構造の同じ場所にコピーさせます.. .
したがって、この例では、バッチ ファイルは以下のすべてをコピーする必要があります。
C:\dir1\dir2\
の中へ
x:\dirA\dirB\dir1\dir2\.
幸いなことに (私が思うに)、移行先のフォルダー構造は変更されませんが、移行元は各マシンの異なる場所にある可能性があります。ソースツリーのどこにいるかを検出し、宛先パスの一部を置き換える賢い方法があれば... ???
これまでの私の簡単なスクリプトは次のとおりです。
@echo off
set /p FILETYPE="What file type do you want to copy? (For example use txt, max, f3d, or * to copy all files.)"
xcopy %1\*.%FILETYPE% c:\output /s
pause
皆さんが与えることができるどんな助けにも感謝します! :) ケン
更新:コメントを書式設定したり、十分な文字数を許可したりできないため、更新されたコード サンプルをここに追加します。以下の内容は完全に正しいとは限りません。明確にするために最善を尽くしています。これを投稿してから、さらに理解しました。基本的に、delims の後に文字列を使用する方法 (または可能であれば) を理解する必要があります。各文字をチェックするだけのようです...
@echo off
rem user drag folder onto .bat (left click, move folder using mouse onto .bat icon)
rem %1 in ex is C:\random_folder\another_folder\proj1\area1\scene23
set destRoot=X:\companyname\allprojects\proj1
set rootDir=proj1
rem assume %1 is folder dragged onto .bat file
for /f "tokens=2* delims=<foldername???>" %%a in ("%1") do (
set part1=%%a
set chunk=%%b
)
set finalDest=destRoot+chunk
xcopy %1\* %finalDest% /E /EXCLUDE:exclusions.txt
pause
これを作成したいと思っています: "X:\companyname\allprojects\proj1\area1\scene23"