答案1
如何使用我的命名方案一次创建所有这些子文件夹?
如果我要在特定目录(例如 C:\Dropbox\Development)中创建子文件夹,我是否需要先 cd 到该目录?假设我正在使用 cmd shell?
要在特定目录(不是当前目录)中创建子文件夹(子目录),您可以执行以下操作之一:
cd C:\Dropbox\Development
首先或- 将命令更改
md Lec-%%i
为md C:\Dropbox\Development\Lec-%%i
。
笔记:
mkdir
是其同义词md
,可以代替其使用。
下面我展示了两种替代方法,第一种是从cmd
shell(命令行),第二种是使用批处理文件。
作为奖励(尽管原始问题中没有要求)还有一个bash
shell 替代方案。
从cmd
shell 中:
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
shell 中:
for i in {9..120}; do mkdir Lec-$i; done;
或者(更便携的版本)
for i in `seq 9 120`; do mkdir Lec-$i; done;
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 为了- 有条件地执行命令多次。
- MD- 创建目录 - 创建一个新文件夹。
答案2
对于有限数量的文件夹,还有另一种简单的方法。可能在这里有用,或者对其他人有用。
在 Windows 中,我们可以通过创建文件夹“lec(1)”来创建编号文件夹名称,然后根据需要复制粘贴该文件夹,如果我们粘贴 10 次,将会有 11 个文件夹,名称分别为“lect(1)”至“lec(10) - Copy”
这里唯一的技巧是第一个文件夹必须包含括号 (n),其中 n 是编号开始的数字。
Windows 在粘贴文件夹名称“lec(1) - Copy”处包含“-copy”:(
如果您不喜欢它,只需全选并重命名第一个 lec(1) -> lec-(1) 或任何名称。
所有文件夹的名称都将被调整并且“-复制”将被删除;)
- Ctrl+C——复制
- Ctrl+V——粘贴
- F2——重命名
- 输入 - 完成重命名。
- ESC-取消重命名。
- Ctrl+A 或 Ctrl+UP 选择文件夹。
答案3
这不会比针对您的特定场景的脚本更好,但是当您的文件夹名称不相关时了解这一点会很好:您可以通过用空格分隔从命令行创建多个目录:
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
答案4
您可以在文件所在的文件夹中运行此批处理文件。每个文件都将移动到同名文件夹中。
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"
)
)