그래서 저는 수백 개의 하위 강의가있는 온라인 과정을 공부하고 있습니다. 각 하위 강의의 소스 코드를 해당 하위 폴더에 다운로드해야합니다. 120 개가 넘는 강의에서 하위 폴더를 하나씩 만드는 것은 힘든 과정입니다.
내 현재 폴더 구조는 다음과 같습니다.
배치 파일이나 유사한 것을 통해 적절한 이름과 함께 이러한 하위 폴더를 한 번에 모두 만들 수있는 방법이 있습니까?
그래서 저는 수백 개의 하위 강의가있는 온라인 과정을 공부하고 있습니다. 각 하위 강의의 소스 코드를 해당 하위 폴더에 다운로드해야합니다. 120 개가 넘는 강의에서 하위 폴더를 하나씩 만드는 것은 힘든 과정입니다.
내 현재 폴더 구조는 다음과 같습니다.
배치 파일이나 유사한 것을 통해 적절한 이름과 함께 이러한 하위 폴더를 한 번에 모두 만들 수있는 방법이 있습니까?
답변:
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
.A로부터 bash
쉘 :
for i in {9..120}; do mkdir Lec-$i; done;
또는 (더 휴대용 버전의 경우)
for i in `seq 9 120`; do mkdir Lec-$i; done;
C:\Dropbox\Development
, 내가해야 cd
먼저 디렉토리에? cmd
쉘을 사용한다고 가정 합니까? 그리고 많은 감사합니다!
cd
먼저 폴더 로 이동해야합니다.
md Lec-%%i
에md C:\Dropbox\Development\Lec-%%i
md
사용하지 왜 mkdir
Windows에서? 그렇게하면 사람들이 기억할 수있는 * nix와 하나의 차이가 적습니다.
제한된 수의 폴더를위한 또 다른 쉬운 방법이 있습니다. 여기 또는 다른 사람에게 유용 할 수 있습니다.
Windows에서는 "lec (1)"폴더를 만들어 번호가 매겨진 폴더 이름을 만들고 원하는 횟수만큼 복사하여 붙여 넣을 수 있습니다. 10 번 붙여 넣으면 "lect (1)"라는 이름의 11 개의 폴더가 "lec ( 10)-복사 "
여기서 트릭은 첫 번째 폴더에 괄호 (n)를 포함해야한다는 것입니다. 여기서 n은 번호 매기기가 시작되는 번호입니다.
Windows에는 붙여 넣은 폴더 이름 "lec (1)-Copy"에 "-copy"가 포함됩니다.
마음에 들지 않으면 모두를 선택하고 먼저 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"(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
Lec-10
이후에 직관적으로 정렬합니다 Lec-9
.
2
전에 넣어지게된다 10
(당신은 또한 10보다 먼저 정렬되어있는 OP의 스크린 샷 (9)를 보면) 하나가 예상하는 것처럼. 단지 dir
그 문제에서 고통 과 필요 0
패딩을,하지만 난 그게 문제가 될 거라고 생각하지 않도록 영업 이익은 명령 행에 대해 잘 몰랐어요
dir
폴더 목록 이 잘못 표시되는 것을 혼동 할 수 있었습니다. Windows 귀하와 afrazier가 언급했듯이 Windows 탐색기는 폴더를 올바르게 정렬 / 나열하지만 OP는 batch
(대부분의 경우)에서 작업 할 수 있는 솔루션을 찾고있었습니다 command prompt
.
이 배치 파일을 파일과 동일한 폴더에서 실행할 수 있습니다. 각 파일은 같은 이름의 폴더로 이동합니다.
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"
)
)