Board logo

标题: [文件操作] 文件整理器(可根据输入的关键字创建文件夹并把包含该关键字的文件移动到该文件夹) [打印本页]

作者: 三十年前    时间: 2020-10-12 22:53     标题: 文件整理器(可根据输入的关键字创建文件夹并把包含该关键字的文件移动到该文件夹)

核心代码只有这几行,这是前几个月技术很差的时候琢磨出来的思路。

核心代码:
set /p var=输入关键字:     

DIR /B >临时清单.**
FIND "%var%" 临时清单.** >挑选后的临时清单.**
echo @echo off>临时命令.cmd
if exist %var% goto 已存在该文件夹
echo md "%var%">>临时命令.cmd
:已存在该文件夹
FOR /F "SKIP=2 TOKENS=1 DELIMS=" %%A IN (挑选后的临时清单.**) DO ECHO MOVE "%%A" "%var%" >>临时命令.cmd
echo DEL 临时清单.** >>临时命令.cmd
echo del 挑选后的临时清单.** >>临时命令.cmd
echo del 临时命令.cmd >>临时命令.cmd





完全版:

@ECHO OFF
ECHO         ┌────────────────────────────────┐
ECHO         │                                                                  │
ECHO         │        输入关键字,程序会挑出含有该关键字的文件并放入新文件夹          │
ECHO         │                                                                  │
ECHO         │        谨慎选择关键字,注意文件扩展名也在作用范围内。                  │
ECHO         │                                                                  │
ECHO         │                输入完成后按回车                                  │
ECHO         │                                                                  │
ECHO         └────────────────────────────────┘
set /p var=输入关键字:     

DIR /B >临时清单.**
FIND "%var%" 临时清单.** >挑选后的临时清单.**
echo @echo off>临时命令.cmd
if exist %var% goto 已存在该文件夹
echo md "%var%">>临时命令.cmd
:已存在该文件夹
FOR /F "SKIP=2 TOKENS=1 DELIMS=" %%A IN (挑选后的临时清单.**) DO ECHO MOVE "%%A" "%var%" >>临时命令.cmd
echo DEL 临时清单.** >>临时命令.cmd
echo del 挑选后的临时清单.** >>临时命令.cmd
echo del 临时命令.cmd >>临时命令.cmd
if exist %var% echo            ┌────── 该文件夹已存在,是否继续执行?────┐
if exist %var% echo            │                                                        │
if exist %var% echo            │        继续执行会将符合条件的文件都移动到该文件夹。        │
if exist %var% echo            │                                                        │
if exist %var% echo            └──────如需停止,点右上角“X”。───────┘
if exist %var% echo                                ↓
if exist %var% echo                                ↓
if exist %var% echo                                ↓
if exist %var% echo                        ┌────────────┐
if exist %var% echo                        │                          │
if exist %var% echo                        │        ~( ̄▽ ̄~)~          │
if exist %var% echo                        │                          │
if exist %var% echo                        └────────────┘
if exist %var% echo         按任意键将继续执行,原文件夹文件将丢失
PAUSE

MD D:\批处理自动备份(不重要)
COPY 文件整理神器(2.0).CMD D:\批处理自动备份(不重要)

CALL 临时命令.cmd

思路如下:
先用dir /b 列出清单
再用find找出包含关键字的名单,再列一张清单
在该清单的每一行前面加move,后面加文件夹名
把该清单的扩展名改成cmd
call该清单,齐活儿。
能用,但效率比较低。
作者: 三十年前    时间: 2020-10-12 22:55

本帖最后由 三十年前 于 2020-10-13 08:58 编辑

这是最近学了新知识后重新写的,简洁高效多了。

代码如下:


@echo off

set /p var=请输入:   

md %var%

for %%a in (*%var%*) do if exist %%a (

move "%%a" %var%

)

pause>nul


思路如下:
set命令都懂,不多说。用 set /p 确定关键字和新建文件夹名称。
在for命令里,用   *%var%*   来筛选包含该关键字的文件,如  *c*  就代表了  ab.c  或   cd.f   或   abcd.efg   等文件。
作者: Batcher    时间: 2020-10-12 23:11

回复 2# 三十年前


    如果用户输入一个带空格的字符串,会导致这个代码出错。可以考虑一下是否有必要解决这个问题。
作者: 三十年前    时间: 2020-10-13 08:53

回复 3# Batcher


    感谢指出。
我尝试了一下,在for循环的括号里,在变量两端加双引号可以解决这个问题。
欢迎帮忙指出别的问题,不胜感谢。


修改后的代码如下:
  1. @echo off
  2. set /p var=请输入(勿仅输入一个空格号):   
  3. md "%var%"
  4. for %%a in ("*%var%*") do if exist %%a (
  5.   move "%%a" "%var%"
  6. )
  7. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2