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

回复 5# 惆怅而又凄凉


   在代码的开头加一句
  1. setlocal enabledelayedexpansion
复制代码
文件名含 感叹号就在 for语句内加
  1. cd /d "%~dp0"
  2. for %%a in (*.jpg) do (
  3.     echo 正在处理文件:%%a
  4.     set "FN=%%a"
  5.     setlocal enabledelayedexpansion
  6.     set "FNR=!FN:*-=!"
  7.     call set "FNL=%%FN:-!FNR!=%%"
  8.     echo name = %%a
  9.     echo fn = !FN!
  10.     echo fnr = !FNR!
  11.     echo fnl = !FNL!
  12.     endlocal
  13.     pause
  14. )
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 惆怅而又凄凉 于 2023-3-8 11:52 编辑
回复  惆怅而又凄凉
Batcher 发表于 2023-3-8 09:23



    非常感谢解答!真的是醍醐灌顶。。。

看是看懂了,但不知道为啥出错,然后我做了中断和echo,结果是空的
  1. cd /d "%~dp0"
  2. for %%a in (*.jpg) do (
  3.     echo 正在处理文件:%%a
  4.     set "FN=%%a"
  5.     set "FNR=!FN:*-=!"
  6.     call set "FNL=%%FN:-!FNR!=%%"
  7.     echo name = %%a
  8.     echo fn = %FN%
  9.     echo fnr = %FNR%
  10.     echo fnl = %FNL%
  11. pause
  12. )
复制代码
  1. 正在处理文件:a-123456.jpg
  2. name = a-123456.jpg
  3. fn =
  4. fnr =
  5. fnl =
  6. 请按任意键继续. . .
复制代码
www.imxyd.com

TOP

回复 3# 惆怅而又凄凉
  1. @echo off
  2. cd /d "%~dp0"
  3. for %%a in (*.zip) do (
  4.     echo 正在处理文件:%%a
  5.     set "FileName=%%a"
  6.     set "NameRight=!FileName:*-=!"
  7.     call set "NameLeft=%%FileName:-!NameRight!=%%"
  8.     if not exist "!NameLeft!" (
  9.         md "!NameLeft!"
  10.     )
  11.     move "%%a" "!NameLeft!\"
  12. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    感谢解答,我的主要问题是:
假设文件名是32132-aadjoig.zip

我本来考虑的是
1、遍历文件名,将文件名写入变量。
2、将变量字符串从“-”前面截取。
3、在指定位置建立文件夹为变量。
4、将该文件移至该文件夹。

但我没找到字符串按关键字截取的命令,还望再指教一二,谢谢!
www.imxyd.com

TOP

回复 1# 惆怅而又凄凉


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "tokens=1* delims=-" %%a in ('dir /b /a-d *.zip') do (
  4.     echo 正在处理文件:%%a
  5.     if not exist "%%a" (
  6.         md "%%a"
  7.     )
  8.     move "%%a-%%b" "%%a\"
  9. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表