如何在Windows中自动创建命名文件夹列表?


13

因此,我正在研究一个包含数百个子讲座的在线课程。我需要在相应的子文件夹中下载每个讲座的源代码。拥有120多个讲座,一个一个子文件夹的创建是一个艰苦的过程。

这是我当前的文件夹结构:

在此处输入图片说明

有没有一种方法可以通过批处理文件或类似文件一次创建所有这些子文件夹以及正确的名称。


@WesSayeed我不确定您的意思。那不就是删除所有文件夹吗?我正在寻找从9一直到122(或那里的讲座数量有多少个)创建文件夹。
Manish Giri 2015年

由于您专门提到了批处理和脚本文件,因此我不会将其作为答案,但是真正的超级用户知道,仅为工作找到合适的工具而不是自己编写;)会容易得多。只需使用重命名工具,您就可以在不到一分钟的时间内找到答案,包括下载。我个人使用过“ 重命名母版”和“ 批量重命名实用程序”(包含广告),并且两者都可以处理此文件以及许多其他烦人的文件和文件夹操作。(我与这两个工具都不隶属。)
Lilienthal

使用类似getright的程序进行下载。它有一个免费版本。每个文件都应下载到其适当的位置。
JDługosz

Answers:


29

如何使用命名方案一次创建所有这些子文件夹?

如果要在特定目录(例如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

有没有办法从Mac终端为Mac OSX做类似的事情?

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外壳?非常感谢!
Manish Giri 2015年

@Manish是的,您需要先cd进入该文件夹。
LPChip

否。只需将其更改md Lec-%%imd C:\Dropbox\Development\Lec-%%i
DavidPostill

而不是md为什么不在mkdirWindows上使用?这样,它与* nix一致,并且使人们记住的差异更少。
user541686

@Mehrdad我将为此添加注释。
DavidPostill

22

对于数量有限的文件夹,还有另一种简单的方法。在这里或对其他人可能有用。

在Windows中,我们可以通过创建文件夹“ lec(1)”并复制粘贴该文件夹多少个名称来进行编号,如果我们粘贴10次,将有11个名为“ lect(1)”的文件夹到“ lec( 10)-复制”

这里唯一的技巧是第一个文件夹必须包含括号(n),其中n是从其开始编号的数字。

Windows在和粘贴的文件夹名称“ lec(1)-复制”中包括“-复制” :(

如果您不喜欢它,则选择全部并重命名第一个lec(1)-> lec-(1)或其他任何内容。

所有文件夹的名称将被调整,“-副本”将被删除;)

  • Ctrl + C-复制
  • Ctrl + V-粘贴
  • F2-重命名
  • 输入-完成重命名。
  • ESC-取消重命名。
  • Ctrl + A或Ctrl + UP选择文件夹。

在此处输入图片说明


2
+1教我一些我不知道的东西。:)
LPChip

动画(“ .gif”)相当不错,但是一遍又一遍又一遍又一遍地重复……非常烦人。
凯文·费根

4
@KevinFegan我不同意。循环播放的GIF可确保用户(您)可以真正观看动画,而无需重新加载页面并快速向下滚动以尝试观看动画。大多数浏览器不提供GIF控制按钮。
phyrfox

很棒的答案,只要您明白了,就停止观看!
mothmonsterman

如果您不想在文件夹名称中加上括号,则此方法将无效。例如,我可以创建一个文件夹列表:x(0),x(1),x(2),... x(N)。但是我无法创建列表:x0,x1,x2,... xN
Gil Epshtain

2

对于您的特定情况,这不会比脚本更好,但是当您的文件夹名称不相关时,很高兴知道这一点:您可以通过在命令行中用空格隔开来创建多个目录:

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

3
指出这一点对您很高兴,但它并不能回答问题……
DavidPostill

1
@DavidPostill。我同意,这就是为什么我要这样写。但这比1个1个文件夹更好。也许我应该删除答案并做个注释?
TTT

1

您可能会发现,如果创建这样编号的文件夹,它们将不会以正确的(预期的)排序顺序显示:

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

1
它们如何排序取决于工具。Explorer(和大多数其他文件管理器)将对它们进行直观的排序,Lec-10其后是Lec-9
afrazier

资源管理器使用自然排序,因此2将按10预期的顺序放在前面(如果您查看OP的屏幕截图,则9也会在10之前排序)。仅dir遭受该问题并需要0填充,但是OP对命令行了解不多,所以我认为这不会成为问题
phuclv

@phuclv-是的,正如您所说,“ OP对命令行了解不多...”。这就是为什么我写这个答案。使OP知道期望什么并提供解决方案(答案)。我可以想象OP使用DavidPostill的出色答案,然后迷茫地看到dir列出的文件夹混乱。Windows正如您和Afrazier所提到的,Windows资源管理器将正确地排序/列出文件夹,但是OP一直在寻找一种batch解决方案,这意味着它们(很可能)可以从中运行command prompt
凯文·费根

0

您可以在与文件相同的文件夹中运行该批处理文件。每个文件将被移到同名文件夹中。

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

首先,我没有阅读您的全部问题...但是据我所知...您想根据列表重命名文件夹...那么有两种方法

方法1- 如果您没有文件夹列表...有解决方法...您需要使用此文件夹树转到macOS ...然后仅复制整个文件夹树... macOS将要做的是复制内容以及列表中所有文件夹的列表...现在粘贴到TextEdit或类似于记事本的任何软件中。

-现在我假设你具有文件夹列表中有你......你只需要三分之一的第三方软件来完成这项工作(现在所有的步骤是针对Windows) https://www.rename-expert.com -In条款使用此软件时,您必须根据需要创建新文件夹,新文件夹2,新文件夹4。

-现在,在“重命名专家”中,有一个从列表的基础重命名文件夹的选项。

-oom!

方法2- 如果要创建整个文件夹树的镜像副本,而其中没有文件。

-超越比较是您需要的软件。 https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure


这错误地假定用户已经具有完整的文件夹树。有更好的解决方案,不需要额外的和/或未知的软件。
jiggunjer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.