Windows で親の下に重複ディレクトリを作成し、ファイルの親の名前を変更する方法

Windows で親の下に重複ディレクトリを作成し、ファイルの親の名前を変更する方法

私は、寄せ集めの Linux スクリプトを Windows のコマンド ラインに変換しようとしています。以下は私のスクリプトです。エレガントではありませんが、何とか動作します。

rar a -r0 boomer.rar
#combines all the files into a rar file
mkdir 'rar - '"${PWD##*/}"
#makes a new sub-dir named the same as parent with "rar - " prepended
cp boomer.rar 'rar - '"${PWD##*/}"
#copies boomer.rar to the new folder (see below*)
rm boomer.rar
#removes rar file *becuse I couldn't just get it to move in linux
cd 'rar - '"${PWD##*/}"
# move focus to new dir
for fname in *.rar
do
mv $fname 'boomer - '"$(pwgen 26 1).rar"
done
#renames files 

編集:

[この部分は、私が達成しようとしていることを説明するため追加しました。このスクリプトの目的は、フォルダー内のすべてのファイルを rar にすることです。例: c:\boomer\egret は boomer.rar を作成します。「rar - egret」という新しいフォルダーが作成されます。C:\boomer\egret\rar - egret boomer.rar が「rar - egret」にコピーされて削除されます。dir が「rar - egret」に変更され、boomer.rar の名前が「boomer - ahs7Ahxei2imah4tubiqu1eY2i.rar」に変更されます。その後、「rar- egret」フォルダー全体が後で保存場所に移動されます。]

「${PWD##*/」を実行する方法がわかりません。この部分について助けが必要です。ディレクトリ名のみ取得し、パスは取得しません。

私は決してプログラマーではありません。これはすべて、このようなフォーラムで手順を調べてまとめたものです。私は無知で、使用したコードを理解していません。申し訳ありませんが、時々、猿が正しいキーを押すことがあります。

私のサークルのメンバーから、これを Windows で動作させるように依頼されました。ここでは、最低限の共通点、つまりバッチ ファイルで作業しています。WSL はインストールされておらず、通常の Windows のみです。

難しすぎる場合は、それでも構いません。さらに情報が必要な場合は、必要なだけ提供しますが、言われるまではわかりません。

答え1

私たちはあなたに代わってコードを書くつもりはありません。

以下は書き方のヒントです。ぜひ参考にしてください。

最初のコマンド (mkdir) は小さなプログラムでしか実行できないため、ここに含めています。残りは自分で記述する方法に関する提案になります。これが意味をなすことを願っています。

私の知る限り、直下の親フォルダーの名前が割り当てられている変数はありませんが、それでも実行可能です。最初の行を次のように置き換える必要があります。

call :Makedir

次に、スクリプトの最後に次のルーチンを追加します。

:MakeDir

set _dir=%~p0

SET _dir2=%_dir:\= %

call :FindParent %_dir2:~1,-1%

mkdir "rar - %Parent%"

goto :eof

:FindParent

if "%1"=="" goto :eof

set Parent=%1 & shift & goto :FindParent

...これでディレクトリが作成されます。残りは自分で書く必要がありますが、その方法は次のとおりです。

次の行はcpに置き換えられcopy、おそらく「/y」が挿入されるので、copy /y「cp」の代わりに試してください。コマンド ラインからcopy /?詳細を試してください。

次の行でrmは が に置き換えられdel /y、おそらく「/f」が挿入されるので、del /y /fの代わりにを試してください。詳細については、rmコマンド ラインから を試してください。del /?

ファイルを宛先に移動する必要があります。'mv' に相当するものは単にmove(move /?詳細については) です。ランダムな文字を生成するには %rnd% を使用します。CMDpwgenには同等のものはありません。

これですべて理解できると思います。理解はできますが、私がすべてを書き出すことはできません。

関連情報