批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

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

本帖最后由 albenlee 于 2020-2-14 21:50 编辑

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
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,不用找我要支付宝或微信账号。如果一定要给,请到微信群给大家发红吧。

TOP

回复 2# Batcher


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

TOP

返回列表