Board logo

标题: [文件操作] 请问大家2个批处理问题 [打印本页]

作者: 娜美    时间: 2024-4-22 15:55     标题: 请问大家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
复制代码

作者: ShowCode    时间: 2024-4-22 16:30

回复 1# 娜美


echo %%~nxa  ===     
改成:
set /p =%%~nxa  ===     <nul
作者: 娜美    时间: 2024-4-22 16:44

回复 2# ShowCode


    谢谢解答了第二个问题
作者: 咒语    时间: 2024-4-23 16:34

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

第一个我试了一下,echo.后面加空格就不会有“.”了,但是会多一个空格,我也不知道是什么原因。我也试了echo\也是一样的,但是echo=就可以
作者: ShowCode    时间: 2024-4-23 17:07

回复 4# 咒语


    echo,很好使
作者: Five66    时间: 2024-4-23 17:31

观察下
for /r  %%a in (*.txt) do @echo.%%a
的结果
作者: buyiyang    时间: 2024-4-23 18:28

这个有点奇怪,我做了个测试
目录结构为:
  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文件的文件名




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2