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

[文件操作] 请问大家2个批处理问题

1. 请问下为什么在子文件夹里的文本第一行会发生1个点符号?而在当前目录下的文本并不会有这种情况
  1. for /r   %%a in (*.txt) do (
  2.    echo.
  3.    echo  Thanks
  4. )>%%a.tmp
  5. 在当前目录下的子文件夹里的文本会发生1个点符号
  6. D:\A\W\t.txt
  7. .
  8. Thanks
复制代码
在当前目录下的文本不会
  1. D:\A\t.txt
  2.   
  3. Thanks
复制代码
另外
2. 请问怎么才能拼接成1行
  1. for /r  %~dp0  %%a in ("*.txt") do (      
  2.    echo %%~nxa  ===     
  3.    coder -s -a gc -f  "%%a"   
  4.    echo.
  5. )>>out.tmp
  6. W.txt  ===  
  7. ANSI
复制代码
拼接成1行样式
  1. W.txt  ===  ANSI
复制代码

回复 1# 娜美


echo %%~nxa  ===     
改成:
set /p =%%~nxa  ===     <nul
测试代码之前请做好备份

TOP

回复 2# ShowCode


    谢谢解答了第二个问题

TOP

本帖最后由 咒语 于 2024-4-23 16:41 编辑

第一个我试了一下,echo.后面加空格就不会有“.”了,但是会多一个空格,我也不知道是什么原因。我也试了echo\也是一样的,但是echo=就可以

TOP

回复 4# 咒语


    echo,很好使
测试代码之前请做好备份

TOP

观察下
for /r  %%a in (*.txt) do @echo.%%a
的结果

TOP

这个有点奇怪,我做了个测试
目录结构为:
  1. R:\一级
  2. │  test.bat
  3. │  一级1.txt
  4. │  一级2.txt
  5. └─二级
  6.     │  二级1.txt
  7.     │
  8.     └─三级
  9.             三级1.txt
复制代码
在一级目录执行test.bat:
  1. for /r  %%i in (*.txt) do echo.
  2. pause
复制代码
cmd窗口显示
  1. R:\一级>for /R %i in (*.txt) do echo.
  2. R:\一级>echo.
  3. R:\一级>echo.
  4. R:\一级>echo..
  5. .
  6. R:\一级>echo..
  7. .
  8. R:\一级>pause
复制代码
除了遍历找到的第一个txt文件所在目录时,其他时候.符号都会多一个,.:/\[]+等符号都会如此
执行6楼所说的test.bat:for /r  %%a in (*.txt) do @echo.%%a结果为:
  1. R:\一级>for /R %a in (*.txt) do @echo.%a
  2. R:\一级\一级1.txt
  3. R:\一级\一级2.txt
  4. R:\一级\二级\二级1.txt.R:\一级\一级2.txt
  5. R:\一级\二级\三级\三级1.txt.R:\一级\一级2.txt
复制代码
除了遍历一级目录(找到的第一个txt文件所在目录)时,其他时候除了多一个.符号还会多一个一级目录(找到的第一个txt文件所在目录)的最后一个txt文件的文件名

TOP

返回列表