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

[文本处理] 批处理 根据文件夹名称去 copy文件 怎么做

文件夹名称是 2个数字开头或3个数字开头    22abcd   也可能是    133abcd
要从上一层目录 复制文件名称abcd.dll  的文件 到这个文件夹,如果没有这个文件就提示    abcd.dll不存在

下面代码写了一半,就获取当前文件名称22abcd  后面的网上搜了下,不会写了
如何把文件夹前面的数字去掉,数字可能是2位也可能是3位,再从上层目录 复制abcd.dll到这个文件夹   .dll文件不存在就提示
  1. @echo off
  2. set "p=%~dp0"
  3. for /f "delims=" %%i in ("%p:~0,-1%") do (set var=%%~ni)
  4. echo %var%
  5. pause
复制代码

回复 2# hlzj88


文件夹名称 数字2-3位开头  后面字符串长度不定,但不会太长,50位以内吧
每个文件夹里都有一个批处理单独执行的,不是一个批处理 拷贝所有的dll到所的对应有文件夹
后来换了个思维,就用两个批处理,2位开头的 直接去掉开头2位,3位数字开头的去掉开头3位

2位数字开头的
  1. @echo off
  2. set "p=%~dp0"
  3. for /f "delims=" %%i in ("%p:~0,-1%") do (set var=%%~ni)
  4. echo %var:~2,100%
  5. copy ..\0GameServer\%var:~2,100%.dll .\
  6. pause
复制代码
3位数字开头的
  1. @echo off
  2. set "p=%~dp0"
  3. for /f "delims=" %%i in ("%p:~0,-1%") do (set var=%%~ni)
  4. echo %var:~3,100%
  5. copy ..\0GameServer\%var:~3,100%.dll .\
  6. pause
复制代码
当时就是不知道 正则表达式 如何做,就判断开头2-3位是数字的话就忽略,只取后面的文件名字符串(后面字符串的也可能包含数字)
文件不存在的时候,执行批处理的时候会提示了
兄弟知道怎么用正则表达式去把这两个做成一个通用的话 指导下~~谢谢

TOP

回复 6# 回家路上


    叼~~~~

TOP

返回列表