![Windows で親の下に重複ディレクトリを作成し、ファイルの親の名前を変更する方法](https://rvso.com/image/1605149/Windows%20%E3%81%A7%E8%A6%AA%E3%81%AE%E4%B8%8B%E3%81%AB%E9%87%8D%E8%A4%87%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%80%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E8%A6%AA%E3%81%AE%E5%90%8D%E5%89%8D%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
私は、寄せ集めの 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
には同等のものはありません。
これですべて理解できると思います。理解はできますが、私がすべてを書き出すことはできません。