无忧启动论坛

标题: 请教, 能否用.bat从.txt中找出号码并创建交件夹? [打印本页]

作者: clautton    时间: 2016-11-7 22:58
标题: 请教, 能否用.bat从.txt中找出号码并创建交件夹?
请教, 能否用.bat从.txt中找出号码并创建交件夹?

例如我有C:\1\1.txt 和 C:\1\1.bat 和 C:\2

1.txt内只有号吗00027, 当我连行1.bat, 会创建交件夹C:\2\00027, 之后会把txt内的00027改成00028. (每次都增加一个数字, 来等待下一次使用时创建00028交件夹).


谢谢.
作者: tools241    时间: 2016-11-8 07:06
本帖最后由 tools241 于 2016-11-8 14:36 编辑

UnxUtils仿unix命令.rar  (2.8M) , 载点网盘: http://pan.baidu.com/s/1mgEBMkS

如何利用 仿unix/linux命令 sed 一次替换文字中的 "某些相似性的字串" ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=383106



REM 利用 仿unix命令(请将下列3个*.EXE档复制过来使用 ) :
REM 1.改字串用法 sed.exe  --help
REM 2.计算用法   expr.exe  --help

REM 3.显示字串   echo.exe  --help

编辑 1.BAT 如下:

@echo off

echo.exe @echo off\n > tmp.bat

rem ^ 表示为文字开头, 将开头替换成
md C:\2\
sed.exe -e "s/
^/md C:\2\/" < C:\1\1.txt >> tmp.bat
echo.exe \n >> tmp.bat

sed.exe -e "s/^/expr.exe 100001 + /" < C:\1\1.txt >> tmp.bat
echo.exe \n >> tmp.bat

REM 删第一个字: . 为任意一个字
tmp.bat |  sed.exe -e "s/.//" > C:\1\1.txt


作者: nttwqz    时间: 2016-11-8 09:47
  1. @echo off
  2. for /f "usebackq" %%a in ("C:\1\1.txt") do set filenum=%%a
  3. title 创建 %filenum% 文件夹
  4. if not %filenum% equ 99999 (md "c:\2\%filenum%") else (title 已达到 99999 将退出 & pause & exit)
  5. set /a num=1%filenum%+1
  6. set num=%num:~-5%
  7. echo %num% > "C:\1\1.txt"
  8. pause
复制代码

作者: nttwqz    时间: 2016-11-8 09:48
如果1.txt中只有号码没有其它内容的话
作者: clautton    时间: 2016-11-8 13:33
nttwqz 发表于 2016-11-8 09:48
如果1.txt中只有号码没有其它内容的话

1.txt中是只有五位数的号码, 没有其它内容的.
试了运行, 1.txt会自动增加数字, 但C:\2内没有创建交件夹.

谢谢.
作者: nttwqz    时间: 2016-11-8 13:34
clautton 发表于 2016-11-8 13:33
1.txt中是只有五位数的号码, 没有其它内容的.
试了运行, 1.txt会自动增加数字, 但C:\2内没有创建交件夹. ...

Win7以上可能需要管理员权限运行,WinXP测试一切正常
作者: clautton    时间: 2016-11-8 14:03
nttwqz 发表于 2016-11-8 13:34
Win7以上可能需要管理员权限运行,WinXP测试一切正常

我的是Win7 Pro. 不是管理员权限的问题.
作者: clautton    时间: 2016-11-8 14:10
tools241 发表于 2016-11-8 07:06
UnxUtils仿unix命令.rar  (2.8M) , 载点网盘: http://pan.baidu.com/s/1mgEBMkS

如何利用 仿unix/linux ...

谢谢. 这个比较复习, 3楼那比较简单可行, 但创建交件夹出了问题.
作者: tools241    时间: 2016-11-8 14:25
本帖最后由 tools241 于 2016-11-8 14:37 编辑
clautton 发表于 2016-11-8 14:10
谢谢. 这个比较复习, 3楼那比较简单可行, 但创建交件夹出了问题.


对 "仿unix命令" 而言, 大大的问题太简单,
"仿unix命令" 可解决极端复杂的 "字串处理" 问题,
有兴趣者可参考文中
范例.

例: 如果 1.txt 中不是 00027 而是 abcxy00027poq, 仍可轻易提取出其中的 00027

作者: clautton    时间: 2016-11-8 14:38
tools241 发表于 2016-11-8 14:25
对 "仿unix命令" 而言, 大大的问题太简单,
"仿unix命令" 可解决极端复杂的 "字串处理" 问题,
有兴趣 ...

希望能用你那, 不想加载exe.


作者: clautton    时间: 2016-11-8 14:45
tools241 发表于 2016-11-8 07:06
UnxUtils仿unix命令.rar  (2.8M) , 载点网盘: http://pan.baidu.com/s/1mgEBMkS

如何利用 仿unix/linux ...

谢谢. 已下载来研究学习.
作者: nttwqz    时间: 2016-11-8 15:34
clautton 发表于 2016-11-8 14:03
我的是Win7 Pro. 不是管理员权限的问题.

右键以管理员权限运行也不行??

我回去在Win10上试试……
作者: nttwqz    时间: 2016-11-8 18:41
已测试,一切正常,不需要右键管理员权限直接双击即可(UAC默认)
作者: clautton    时间: 2016-11-8 19:33
nttwqz 发表于 2016-11-8 18:41
已测试,一切正常,不需要右键管理员权限直接双击即可(UAC默认)

我的是英文版Win7 Pro, 原来是中文字的问题. 我把中文字删除就一切正常了.

Thank you.
作者: jzura    时间: 2016-11-21 09:25
大家有什么好看法 都说一下吧












重庆民间道士道法驱邪,收徒弟
作者: dos时代菜鸟    时间: 2016-11-21 10:09
本帖最后由 dos时代菜鸟 于 2016-11-21 10:11 编辑
nttwqz 发表于 2016-11-8 09:47


在 @echo off 后面加上
setlocal ENABLEDELAYEDEXPANSION

话说这种功能的脚本,不需要第三方软件支持。
作者: nttwqz    时间: 2016-11-21 10:59
dos时代菜鸟 发表于 2016-11-21 10:09
在 @echo off 后面加上
setlocal ENABLEDELAYEDEXPANSION



???

为何要延迟?

我没有使用第三方软件。
作者: dos时代菜鸟    时间: 2016-11-25 20:48
nttwqz 发表于 2016-11-21 10:59
???

为何要延迟?

就是 说你那个 我比较看好,因为没有用第三方软件
至于为啥要 setlocal 你自己试一下不就知道了?呵呵,
如果不设置,for里面的 变量 有效范围会 只对当次 有效,也就起不到 循环效果了
作者: nttwqz    时间: 2016-11-26 22:00
dos时代菜鸟 发表于 2016-11-25 20:48
就是 说你那个 我比较看好,因为没有用第三方软件
至于为啥要 setlocal 你自己试一下不就知道了?呵呵,
...

我在for中设置的变量未在for里面二次使用,文本里面只有一个数字,没有第二行内容,只用一次,变量不需要更新,况且这个批处理不需要循环,何来延迟一说?

刚试了,将末尾的 pause 改成 %0 循环正常!
作者: dos时代菜鸟    时间: 2016-11-26 22:04
nttwqz 发表于 2016-11-26 22:00
我在for中设置的变量未在for里面二次使用,文本里面只有一个数字,没有第二行内容,只用一次,变量不需要 ...

有道理,是我 糊涂了.呵呵
作者: nttwqz    时间: 2016-11-26 22:28
dos时代菜鸟 发表于 2016-11-26 22:04
有道理,是我 糊涂了.呵呵

我猜,你想的可能是楼主的文本是每行一个数字,有2行以上,根据每行的数字创建文件夹,此时就需要变量延迟了!
作者: uJtzY514    时间: 2017-1-10 19:15
读十年语文,不如顶半天帖子




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3