だから、私は数百のサブレクチャーがあるオンラインコースを勉強しています。各講義のソースコードを対応するサブフォルダーにダウンロードする必要があります。 120以上の講義があるため、サブフォルダを1つずつ作成するのは骨の折れるプロセスです。
これが私の現在のフォルダ構造です:
これらすべてのサブフォルダーを、適切な名前と共に、バッチファイルまたは類似のものを使用して一度に作成できる方法はありますか?.
C:\ Dropbox\Developmentなどの特定のディレクトリにサブフォルダを作成する場合、最初にそのディレクトリにcdする必要がありますか?私がcmdシェルを使用していると思いますか?
特定のディレクトリ(現在のディレクトリではない)にサブフォルダ(サブディレクトリ)を作成するには、次のいずれかを実行します。
cd C:\Dropbox\Development
最初またはmd Lec-%%i
コマンドをmd C:\Dropbox\Development\Lec-%%i
に変更します。注意:
mkdir
はmd
の同義語であり、代わりに使用できます。以下に、最初にcmd
シェル(コマンドライン)から、次にバッチファイルを使用して、両方の選択肢を示します。
ボーナスとして(元の質問では要求されませんでしたが)bash
シェルの代替案もあります。
cmd
シェルから:cd C:\Dropbox\Development
for /l %i in (9,1,120) do md Lec-%i
または
for /l %i in (9,1,120) do md C:\Dropbox\Development\Lec-%i
@echo off
cd C:\Dropbox\Development
for /l %%i in (9,1,120) do md Lec-%%i
または
@echo off
for /l %%i in (9,1,120) do md C:\Dropbox\Development\Lec-%%i
ノート:
9
は開始番号です。必要に応じて交換してください。1
がステップです。これを変更しないでください。120
終了番号。必要に応じて、最後に必要なディレクトリの番号に変更します。別のディレクトリにファイルを作成するには、次のいずれかを実行できます
cd C:\Dropbox\Development\Lec-%%i
最初またはmd
コマンドをmd C:\Dropbox\Development\Lec-%%i
に変更します。bash
シェルから:
for i in {9..120}; do mkdir Lec-$i; done;
または(よりポータブルなバージョンの場合)
for i in `seq 9 120`; do mkdir Lec-$i; done;
フォルダの数が限られている場合は、別の簡単な方法があります。ここまたは他の誰かのために役立つかもしれません。
Windowsでは、「lec(1)」というフォルダを作成し、必要な回数だけコピーして貼り付けることで、番号付きのフォルダ名を作成できます。10回貼り付けると、「lect(1)」から「lec( 10)-コピー」
ここでの唯一のトリックは、最初のフォルダーに括弧(n)を含める必要があることです。ここで、nは番号付けを開始する番号です。
Windowsには、「-コピー」が含まれ、貼り付けられたフォルダ名「lec(1)-コピー」:(
気に入らない場合は、すべてを選択して、最初にlec(1)-> lec 1)などの名前を変更してください。
すべてのフォルダの名前が調整され、「-コピー」が削除されます;)
---(
これは特定のシナリオのスクリプトよりも優れているわけではありませんが、フォルダー名が無関係である場合に知っておくと便利です。スペースで区切ることにより、コマンドラインから複数のディレクトリを作成できます。
C:\temp\animals>dir
Volume in drive C is Windows
Volume Serial Number is 82CB-BB0F
Directory of C:\temp\animals
11/16/2015 03:55 PM <DIR> .
11/16/2015 03:55 PM <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 1,636,846,243,840 bytes free
C:\temp\animals>mkdir cats dogs penguins
C:\temp\animals>dir
Volume in drive C is Windows
Volume Serial Number is 82CB-BB0F
Directory of C:\temp\animals
11/16/2015 03:55 PM <DIR> .
11/16/2015 03:55 PM <DIR> ..
11/16/2015 03:55 PM <DIR> cats
11/16/2015 03:55 PM <DIR> dogs
11/16/2015 03:55 PM <DIR> penguins
0 File(s) 0 bytes
5 Dir(s) 1,636,846,178,304 bytes free
このような名前の付いた番号付きフォルダを作成した場合、それらは適切な(予期される)ソート順で表示されないことがあります。
C:\Dropbox\Development> dir /b
Lec-10
Lec-100
Lec-101
Lec-102
Lec-103
Lec-104
Lec-105
Lec-106
Lec-107
Lec-108
Lec-109
Lec-11
Lec-110
Lec-111
Lec-112
Lec-113
Lec-114
Lec-115
Lec-116
Lec-117
Lec-118
Lec-119
Lec-12
Lec-120
Lec-13
Lec-14
Lec-15
Lec-16
Lec-17
Lec-18
Lec-19
Lec-20
Lec-21
...
Lec-89
Lec-9
Lec-90
Lec-91
...
問題は、フォルダー名の数字部分が可変幅であるため、フォルダーの並べ替え方法に影響することです。
フォルダーが適切に並べ替えられていることが重要な場合は、以下のバッチファイルを使用して、次のように、すべての番号が同じ長さになるように、フォルダー名の番号部分に「0」(ゼロ)を埋め込んだフォルダーを作成します。
C:\Dropbox\Development> dir /b
Lec-009
Lec-010
Lec-011
Lec-012
Lec-013
Lec-014
Lec-015
Lec-016
Lec-017
Lec-018
Lec-019
Lec-020
Lec-021
...
ここにバッチファイルがあります:
@echo off
for /L %%f in (9,1,120) do call :work 000%%f
goto :EOF
:work
set "dx=%~1"
set "dx=%dx:~-3%"
md "C:\Dropbox\Development\Lec-%dx%" >nul 2>&1
set "dx="
goto :EOF
このバッチファイルは、ファイルと同じフォルダーで実行できます。各ファイルは同じ名前のフォルダーに移動されます。
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)
誤って使用しないように、以下の警告とともに使用しています。
@echo off
echo.
set sure=
set /p sure=you want to put each file in this folder into their own folders?
if /i "%sure%"=="" exit
if /i "%sure:~0,1%"=="n" exit
if /i not "%sure:~0,1%"=="y" (exit) else (echo.&echo are you sure? Close window to cancel or..)
echo.&pause
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)