Board logo

标题: [文件操作] 【已解决】出错:运行不同文件夹里的bat,显示找不到路径 [打印本页]

作者: 思想之翼    时间: 2013-10-31 02:07     标题: 【已解决】出错:运行不同文件夹里的bat,显示找不到路径

本帖最后由 思想之翼 于 2013-11-3 13:30 编辑

D盘中,有名称为“数据”的文件夹,其中包含名称为1 、2 、3...的若干子文件夹,1 、2 、3...若干子文件夹里又包含同样名称的lishi子文件夹,每个lishi子文件夹里有一个"合并.bat"
欲写一个BAT,依次运行各个lishi子文件夹里的"合并.bat",下述代码显示 找不到路径,如何修改?
@echo off
cd /d "数据\1\lishi\"
start /WAIT "" "合并.bat"
cd /d "数据\2\lishi\"
start /WAIT "" "合并.bat"
cd /d "数据\3\lishi\"
start /WAIT "" "合并.bat"
pause
作者: DAIC    时间: 2013-10-31 08:46

把 cd /d 后面的相对路径改成绝对路径
作者: foxJL    时间: 2013-10-31 08:48

这样不行吗?
  1. @echo off
  2. start /WAIT "" "d:\数据\1\lishi\合并.bat"
  3. start /WAIT "" "d:\数据\2\lishi\合并.bat"
  4. start /WAIT "" "d:\数据\3\lishi\合并.bat"
  5. pause
复制代码

作者: 思想之翼    时间: 2013-11-6 19:44

回复 3# foxJL

您写的代码运行时出错:
作者: foxJL    时间: 2013-11-6 20:02

回复 4# 思想之翼


    后面的路径你自己改成"合并.bat"文件的绝对路径
作者: 思想之翼    时间: 2013-11-6 20:18

回复 5# foxJL

@echo off
start /WAIT "" "d:\数据\1\lishi\合并.bat"
start /WAIT "" "d:\数据\2\lishi\合并.bat"
start /WAIT "" "d:\数据\3\lishi\合并.bat"
pause

就是上述路径,没有丝毫不同,无奈运行不了,到底问题出在哪?想半天也没头绪。
作者: xxpinqz    时间: 2013-11-6 20:36

应该是的你的某个合并.bat有问题
作者: 思想之翼    时间: 2013-11-6 20:44

回复 7# xxpinqz
合并.bat代码如下:

@echo off
set "a=%cd%"
cd..
set "b=%cd%"
call set "c=%%a:%b%=%%"
set "c=%c:\=%"
cd %c%
for /f "delims=" %%a in ('dir/a/b wj*.txt') do type "%%a">>%c%.txt
作者: xxpinqz    时间: 2013-11-6 21:12

回复 8# 思想之翼
%cd%取得的不是合并.bat所在的路径,所以出错了。
2楼已经给出答案了。
@echo off
cd /d "d:\数据\1\lishi\"
start /wait "" "合并.bat"
........
或者合并.bat开头加入cd /d "%~dp0"
作者: 思想之翼    时间: 2013-11-10 17:30

回复 9# xxpinqz
用以下代码批量运行不同文件夹里的BAT,其中的 “删除空格.bat ” 可以运行,但 “并排合并.bat ”出现错误,烦请帮助查找错误所在。

批量运行不同文件夹里的BAT,以下代码出错:
@echo off
start /WAIT "" "d:\3\2\1.1\删除空格.bat"
start /WAIT "" "d:\3\2\1.1\并排合并.bat"
start /WAIT "" "d:\3\2\1.2\删除空格.bat"
start /WAIT "" "d:\3\2\1.2\并排合并.bat"
exit


并排合并.bat 出错
@echo off&setlocal enabledelayedexpansion
set 文件数=100
for /l %%a in (1,1,%文件数%) do (
    for /f "delims=" %%i in (%%a.txt) do (
        set /a n+=1
        for %%a in (!n!) do set "#%%a=!#%%a! %%i"
    )
    set /a m=n,n=0
)
(for /l %%a in (1,1,%m%) do echo,!#%%a:~1!)>wj.txt
  

删除空格.bat
@echo off
for /f "delims=" %%x in ('dir/b/a-d *.txt')do (echo %%x&set/a n+=1
(for /f "usebackq delims=" %%i in ("%%x")do for %%j in (%%i)do echo.%%j)>temp.yky
move temp.yky "%%x")
echo %n% 个文件处理完毕
exit




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