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

[文件操作] 【已解决】批处理:robocopy代码开始能用,后面提示非内部命令

robocopy命令在代码开始能正常,后续不正常(一直到文件最后都不正常),提示非内部命令,为什么?怎么解决?
  1. @echo off&setlocal enabledelayedexpansion
  2. title 软链接-程序目录迁移
  3. ::==================================================== 自动提升运行权限 ====================================================::
  4. >nul 2>&1 REG.exe query "HKU\S-1-5-19" || (
  5.     ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\Getadmin.vbs"
  6.     ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\Getadmin.vbs"
  7.     "%TEMP%\Getadmin.vbs"
  8.     DEL /f /q "%TEMP%\Getadmin.vbs" 2>nul
  9.     Exit /b
  10. )
  11. ::==========================================================================================================================::
  12. rem 写入配置,分号左边为软链,右边为目标目录
  13. cd /d %temp%
  14. >mklnk.tmp echo.
  15. >>mklnk.tmp echo d:\aa;e:\aa
  16. rem 读取配置
  17. for /f "delims=; tokens=1,2" %%a in (mklnk.tmp) do (
  18.     set exlink=%%b
  19.     if exist %%b if exist %%~dpa (
  20.         if exist %%a (
  21.             robocopy "d:\aa" "e:\aa" /E /copyall /move /xn
  22.             rem ============================此处和之前使用 robocopy 正常
  23.             rem 读取软链所在目录中所有目录信息
  24.             for /f "skip=5 tokens=3,*" %%i in ('dir %%~dpa /a:d') do (
  25.                 robocopy "d:\aa" "e:\aa" /E /copyall /move /xn
  26.                 rem ====第一次循环 robocopy 正常,后续不正常(一直到文件最后都不正常),提示非内部命令,为什么?怎么解决?
  27.                 rem 以分号截取信息
  28.                 for /f "delims=: tokens=1,2" %%l in ("%%j") do (
  29.                     set name=%%l
  30.                     set path=%%m
  31.                     rem 分号右边空则非软链目录
  32.                     if "%%m" neq "" (
  33.                         if /i "!name:~0,-3!" equ "%%~nxa" (
  34.                             set lnkIsExist=1
  35.                             set exlink=!name:~-1!:!path:~0,-1!
  36.                         )
  37.                     ) else (
  38.                         set set lnkIsExist=0
  39.                     )
  40.                 )
  41.             )
  42.             
  43.             rem 是软链目录
  44.             if !lnkIsExist! equ 1 if /i "%%b" neq "!exlink!" (
  45.                 echo %%~nxa 软链已存在, 但是与目标路径不一致。
  46.                 echo 复制: %%~dpa ,进入目录手动删除或重命名 %%~nxa 软链文件后,重新运行程序
  47.             ) else (
  48.                 echo 目标路径软链已存在
  49.             )
  50.             
  51.             rem 是正常目录
  52.             if !lnkIsExist! equ 0 (
  53.                 echo 迁移目录
  54.                 echo "%%~a" "%%~b"
  55.                 rem call :mov "%%~a" "%%~b"
  56.                 robocopy "%%~a" "%%~b" /E /copyall /move /xn
  57.             )
  58.         ) else (
  59.             echo 软链不存在,可以进行软链操作
  60.         )
  61.     )
  62. )
  63. if exist mklnk.tmp del /f /s /q mklnk.tmp>nul
  64. pause
复制代码
一起学习交流

回复 1# albenlee


    代码里面的path改成mypath
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    原来系统这么多定义好的变量名。
一起学习交流

TOP

返回列表