标题: [文本处理] 批处理怎样按文件名奇偶数移动文件到指定文件夹? [打印本页]
作者: yingtianchang 时间: 2018-7-21 19:18 标题: 批处理怎样按文件名奇偶数移动文件到指定文件夹?
某个文件夹下有几千个文本文件,编号都是数字,没有规律,只能区分奇偶数,能不能根据文件名的奇偶数移动到两个文件夹,比如说名称为奇数的文件移动到1文件夹,偶数的移动到2文件夹。各位大神帮帮忙,谢谢啦
作者: WHY 时间: 2018-7-21 20:08
for %%i in (0 2 4 6 8) do move *%%i.txt 2\
作者: xxpinqz 时间: 2018-7-22 02:00
楼上,move用法错了,会导致灾难。。。
作者: codegay 时间: 2018-7-22 13:32
本帖最后由 codegay 于 2018-7-22 15:23 编辑
nim语言版,有点蛋疼。- import os
- import strutils
- import re
-
- var dir = getAppDir()
- var dest1 = dir / "../1/"
- var dest2 = dir / "../2/"
-
- proc 单(name: string): bool = (name.parseInt and 1) == 1
- proc 双(name: string): bool = not 单 name
-
- for f in walkDirRec(dir):
- var (dir, name, ext) = splitFile(f)
- var txtname = name & ext
- if ext.toLower == ".txt" and match(name, re"\b\d+\b"):
- if 单(name):
- moveFile(f, dest1 / txtname)
- echo f," ===>> ", dest1
-
- else:
- moveFile(f, dest2 / txtname)
- echo f," ===>> ", dest2
复制代码
作者: WHY 时间: 2018-7-23 16:17
本帖最后由 WHY 于 2018-7-23 19:11 编辑
楼上,move用法错了,会导致灾难。。。
xxpinqz 发表于 2018-7-22 02:00
??
可能会出现的问题是,当文件名由 8 位以上数字组成时,文件被移动到错误的文件夹。这个不属于灾难,把文件移回原来的地方就行。
参考 http://www.bathome.net/viewthrea ... mp;page=1#pid175462
好吧,保险的办法:- @echo off
- md 1\ 2\ 2>nul
- for /f "delims=" %%i in ('dir /b /a-d *.txt ^| findstr /i "^[0-9]*[13579]\.txt$"') do move %%i 1\
- for /f "delims=" %%i in ('dir /b /a-d *.txt ^| findstr /i "^[0-9]*[02468]\.txt$"') do move %%i 2\
- pause
复制代码
作者: Batcher 时间: 2018-7-23 16:31
回复 5# WHY
第3行有个笔误,echo需要改成move
作者: WHY 时间: 2018-7-23 19:14
回复 6# Batcher
感谢指正。
作者: xxpinqz 时间: 2018-7-23 19:20
本帖最后由 xxpinqz 于 2018-7-23 19:24 编辑
回复 5# WHY
唉,我记得有个3楼的代码“move %%a 1”,不见了。
不是说你•。。。。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |