[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样按文件名奇偶数移动文件到指定文件夹?

某个文件夹下有几千个文本文件,编号都是数字,没有规律,只能区分奇偶数,能不能根据文件名的奇偶数移动到两个文件夹,比如说名称为奇数的文件移动到1文件夹,偶数的移动到2文件夹。各位大神帮帮忙,谢谢啦

for %%i in (0 2 4 6 8) do move *%%i.txt 2\
1

评分人数

TOP

楼上,move用法错了,会导致灾难。。。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

本帖最后由 codegay 于 2018-7-22 15:23 编辑

nim语言版,有点蛋疼。
  1. import os
  2. import strutils
  3. import re
  4. var dir = getAppDir()
  5. var dest1 = dir / "../1/"
  6. var dest2 = dir / "../2/"
  7. proc 单(name: string): bool = (name.parseInt and 1) == 1
  8. proc 双(name: string): bool = not 单 name
  9. for f in walkDirRec(dir):
  10.     var (dir, name, ext) = splitFile(f)
  11.     var txtname = name & ext
  12.     if ext.toLower == ".txt" and match(name, re"\b\d+\b"):
  13.         if 单(name):
  14.             moveFile(f, dest1 / txtname)
  15.             echo f,"    ===>>   ", dest1
  16.         else:
  17.             moveFile(f, dest2 / txtname)
  18.             echo f,"    ===>>   ", dest2
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 WHY 于 2018-7-23 19:11 编辑
楼上,move用法错了,会导致灾难。。。
xxpinqz 发表于 2018-7-22 02:00



    ??
可能会出现的问题是,当文件名由 8 位以上数字组成时,文件被移动到错误的文件夹。这个不属于灾难,把文件移回原来的地方就行。
参考 http://www.bathome.net/viewthrea ... mp;page=1#pid175462

好吧,保险的办法:
  1. @echo off
  2. md 1\ 2\ 2>nul
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt ^| findstr /i "^[0-9]*[13579]\.txt$"') do move %%i 1\
  4. for /f "delims=" %%i in ('dir /b /a-d *.txt ^| findstr /i "^[0-9]*[02468]\.txt$"') do move %%i 2\
  5. pause
复制代码

TOP

回复 5# WHY


    第3行有个笔误,echo需要改成move
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# Batcher


    感谢指正。

TOP

本帖最后由 xxpinqz 于 2018-7-23 19:24 编辑

回复 5# WHY


唉,我记得有个3楼的代码“move %%a 1”,不见了。
不是说你•。。。。
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表