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

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

[复制链接]
发表于 2018-11-14 00:35:55 | 显示全部楼层 |阅读模式
本帖最后由 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参数还扩展,但是也没作用。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2018-11-14 01:41:52 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2018-11-14 09:23:44 | 显示全部楼层
提取盘符的那个批处理不能修改吗?
 楼主| 发表于 2018-11-14 10:11:09 | 显示全部楼层
回复 2# flashercs


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

先谢谢。
 楼主| 发表于 2018-11-14 10:13:31 | 显示全部楼层
回复 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
复制代码
帮忙看看
记得当时提取盘符也纠结了好久,当时只做记录没有再用来还原就没再改了。
发表于 2018-11-14 12:56:11 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2018-11-14 15:29:09 | 显示全部楼层
回复 6# Batcher


    非常好,谢谢了。我没想到从源头上来解决。。这样省的时间会好多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:29 , Processed in 0.028881 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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