因此,我正在研究一个包含数百个子讲座的在线课程。我需要在相应的子文件夹中下载每个讲座的源代码。拥有120多个讲座,一个一个子文件夹的创建是一个艰苦的过程。
这是我当前的文件夹结构:
有没有一种方法可以通过批处理文件或类似文件一次创建所有这些子文件夹以及正确的名称。
因此,我正在研究一个包含数百个子讲座的在线课程。我需要在相应的子文件夹中下载每个讲座的源代码。拥有120多个讲座,一个一个子文件夹的创建是一个艰苦的过程。
这是我当前的文件夹结构:
有没有一种方法可以通过批处理文件或类似文件一次创建所有这些子文件夹以及正确的名称。
Answers:
如果要在特定目录(例如C:\ Dropbox \ Development)中创建子文件夹,是否需要先cd到该目录?假设我使用的是cmd shell?
要在特定目录(不是当前目录)中创建子文件夹(子目录),可以执行以下操作之一:
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;
C:\Dropbox\Development
,我是否需要先cd
进入该目录?假设我正在使用cmd
外壳?非常感谢!
cd
进入该文件夹。
md Lec-%%i
为md C:\Dropbox\Development\Lec-%%i
md
为什么不在mkdir
Windows上使用?这样,它与* nix一致,并且使人们记住的差异更少。
对于数量有限的文件夹,还有另一种简单的方法。在这里或对其他人可能有用。
在Windows中,我们可以通过创建文件夹“ lec(1)”并复制粘贴该文件夹多少个名称来进行编号,如果我们粘贴10次,将有11个名为“ 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
Lec-10
其后是Lec-9
。
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"
)
)
首先,我没有阅读您的全部问题...但是据我所知...您想根据列表重命名文件夹...那么有两种方法
方法1- 如果您没有文件夹列表...有解决方法...您需要使用此文件夹树转到macOS ...然后仅复制整个文件夹树... macOS将要做的是复制内容以及列表中所有文件夹的列表...现在粘贴到TextEdit或类似于记事本的任何软件中。
-现在我假设你具有文件夹列表中有你......你只需要三分之一的第三方软件来完成这项工作(现在所有的步骤是针对Windows) https://www.rename-expert.com -In条款使用此软件时,您必须根据需要创建新文件夹,新文件夹2,新文件夹4。
-现在,在“重命名专家”中,有一个从列表的基础重命名文件夹的选项。
-oom!
方法2- 如果要创建整个文件夹树的镜像副本,而其中没有文件。
-超越比较是您需要的软件。 https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure