找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25332|回复: 2

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

[复制链接]
发表于 2020-2-14 20:28:10 | 显示全部楼层 |阅读模式
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
复制代码
发表于 2020-2-14 21:23:10 | 显示全部楼层
回复 1# albenlee


    代码里面的path改成mypath
 楼主| 发表于 2020-2-14 21:46:28 | 显示全部楼层
回复 2# Batcher


    原来系统这么多定义好的变量名。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 21:51 , Processed in 0.029989 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表