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

[文件操作] 【已解决】求助批处理行未空格去除办法

本帖最后由 kingshui 于 2018-11-14 15:29 编辑

如题,最近要做系统升级,写了一个备份还原文件的批处理。文件的备份还原基本上没问题的,现在卡在共享盘的还原上。现贴出还原部分代码寻求帮助
  1. @echo off
  2. set /p _user=please enter your Domain ID:
  3. set /p _pw=Please enter your Domain PW:
  4. cls
  5. for /f "delims=: tokens=1,2*" %%i in ('for /f "delims=:" %%a in ^('findstr /n "^:setup$" "%~f0"'^) do @more +%%a "%~f0"') do (
  6. for /f "delims=/ tokens=1" %%s in (%%j) do cmdkey add:%%s /user:%_user% /pass:%_pw
  7. net use %%i: "\\%%~pnj" /p:y
  8. )
  9. echo;Done!
  10. exit
  11. :setup
  12. N:\\10.21.119.168\AllDept  
  13. O:\\scnfsvr01\AllDept   
  14. P:\\scnfsvr01\Shared     
  15. S:\\10.21.119.168\Shared   
  16. Z:\\scnfsvr01\Air\Huawei CS
复制代码
:setup 后面的盘符信息是用另一个批处理提取的,但是路径后面会有空格。。现在采用的办法效率上太低(有时又很快)通常需要几分钟有时甚至一个多小时都没办法重新映射上去。

现寻求有经验的朋友来帮忙看能否采用别的办法来去掉路径后的空格。主要是不想生成文件了。

另外,有时win10 系统使用的时候会出现 more 命令参数过多的提示而没办法取出我的网络驱动器信息,是more的写法上有问题吗? 也试过<%~f0 more +%%a 的办法,还是一样的提示。

SU上有一个说法是用more /e参数还扩展,但是也没作用。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 flashercs 于 2018-11-14 01:59 编辑
  1. @echo off
  2. set /p _user=please enter your Domain ID:
  3. set /p _pw=Please enter your Domain PW:
  4. cls
  5. for /f "delims=:" %%a in ('findstr /in "^:setup$" "%~f0") do set line=%%a
  6. for /f "tokens=1,2* delims=:" %%i in ('more +%line% "%~f0"') do (
  7. for /f "tokens=1 delims=/" %%s in (%%j) do cmdkey add:%%s /user:%_user% /pass:%_pw%
  8.     call :rightTrim "%%j"
  9. net use %%i: "%return%" /p:y
  10. )
  11. echo;Done!
  12. exit /b
  13. :rightTrim
  14. set "str=%~1"
  15. set /a pos=-1
  16. set return=
  17. if not defined str exit /b
  18. if "%str: =%"=="" exit /b
  19. :loop
  20. call set "char=%%str:~%pos%,1%%"
  21. if "%char%"==" " (
  22.     set /a pos-=1
  23.     goto loop
  24. )
  25. if %pos% equ -1 (
  26.     set "return=%str%"
  27. ) else (
  28.     set /a pos+=1
  29.     call set "return=%%str:~0,%pos%%%"
  30. )
  31. exit /b
  32. :setup
  33. N:\\10.21.119.168\AllDept  
  34. O:\\scnfsvr01\AllDept   
  35. P:\\scnfsvr01\Shared     
  36. S:\\10.21.119.168\Shared   
  37. Z:\\scnfsvr01\Air\Huawei CS
复制代码

TOP

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

TOP

回复 2# flashercs


   
伸手党简单测试了下没用,先把in 里的for拿出来到外面试下了,效率问题可能是共享路径无法到达导致的。
先简单处理一下用着先,忙完再看看

先谢谢。

TOP

回复 3# Batcher
  1. @echo off
  2. for /f "delims=:" %%i in ('findstr /n "^:netdrive$" "%~f0"') do more ++%%i "%~f0" >.\backup\%username%.cmd
  3. for /f "tokens=2*" %%i in ('net use^|find ":"') do (
  4. setlocal enabledelayedexpansion
  5. set dr=%%j
  6. set dr=!dr:Microsoft Windows Network=!
  7. echo %%i!dr!
  8. endlocal)>>.\backup\%username%.cmd
  9. msg * Backup done!!
  10. exit /b
  11. :netdrive
  12. @echo off & title Network Driver Re-Map Tools for GWM/ Network Driver Re-Map is in progress...
  13. set /p _user=please enter your Domain ID:
  14. set /p _pw=Please enter your Domain PW:
  15. cls
  16. for /f "delims=: tokens=1,2*" %%a in ('for /f "delims=:" %%i in ^('findstr /n "^:setup$" "%~f0"'^) do @more ++%%i "%~f0"') do (
  17. for /f "delims=\ tokens=1" %%x in ("%%b") do cmdkey /add:%%x /user:schenker_sc\%_user% /pass:%_pw%
  18. net use %%a: "\\%%~pnb" /p:y /y
  19. )
  20. msg * Done
  21. explorer
  22. exit
  23. :setup
复制代码
帮忙看看
记得当时提取盘符也纠结了好久,当时只做记录没有再用来还原就没再改了。

TOP

回复 5# kingshui


第3行到第8行改成这样试试:
  1. (for /f "tokens=2*" %%i in ('net use^|find ":"') do (
  2.     setlocal enabledelayedexpansion
  3.     set dr=%%j
  4.     set dr=!dr:Microsoft Windows Network=!
  5.     for /f "tokens=*" %%a in ("%%i!dr!") do (
  6.         echo %%~fa
  7.     )
  8.     endlocal
  9. ))>.\backup\%username%.cmd
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# Batcher


    非常好,谢谢了。我没想到从源头上来解决。。这样省的时间会好多。

TOP

返回列表