标题: [文件操作] 【已解决】求助批处理行未空格去除办法 [打印本页]
作者: kingshui 时间: 2018-11-14 00:35 标题: 【已解决】求助批处理行未空格去除办法
本帖最后由 kingshui 于 2018-11-14 15:29 编辑
如题,最近要做系统升级,写了一个备份还原文件的批处理。文件的备份还原基本上没问题的,现在卡在共享盘的还原上。现贴出还原部分代码寻求帮助- @echo off
- set /p _user=please enter your Domain ID:
- set /p _pw=Please enter your Domain PW:
- cls
- for /f "delims=: tokens=1,2*" %%i in ('for /f "delims=:" %%a in ^('findstr /n "^:setup$" "%~f0"'^) do @more +%%a "%~f0"') do (
- for /f "delims=/ tokens=1" %%s in (%%j) do cmdkey add:%%s /user:%_user% /pass:%_pw
- net use %%i: "\\%%~pnj" /p:y
- )
- echo;Done!
- exit
- :setup
- N:\\10.21.119.168\AllDept
- O:\\scnfsvr01\AllDept
- P:\\scnfsvr01\Shared
- S:\\10.21.119.168\Shared
- Z:\\scnfsvr01\Air\Huawei CS
复制代码
:setup 后面的盘符信息是用另一个批处理提取的,但是路径后面会有空格。。现在采用的办法效率上太低(有时又很快)通常需要几分钟有时甚至一个多小时都没办法重新映射上去。
现寻求有经验的朋友来帮忙看能否采用别的办法来去掉路径后的空格。主要是不想生成文件了。
另外,有时win10 系统使用的时候会出现 more 命令参数过多的提示而没办法取出我的网络驱动器信息,是more的写法上有问题吗? 也试过<%~f0 more +%%a 的办法,还是一样的提示。
SU上有一个说法是用more /e参数还扩展,但是也没作用。
作者: flashercs 时间: 2018-11-14 01:41
本帖最后由 flashercs 于 2018-11-14 01:59 编辑
- @echo off
- set /p _user=please enter your Domain ID:
- set /p _pw=Please enter your Domain PW:
- cls
- for /f "delims=:" %%a in ('findstr /in "^:setup$" "%~f0") do set line=%%a
- for /f "tokens=1,2* delims=:" %%i in ('more +%line% "%~f0"') do (
- for /f "tokens=1 delims=/" %%s in (%%j) do cmdkey add:%%s /user:%_user% /pass:%_pw%
- call :rightTrim "%%j"
- net use %%i: "%return%" /p:y
- )
- echo;Done!
- exit /b
- :rightTrim
- set "str=%~1"
- set /a pos=-1
- set return=
- if not defined str exit /b
- if "%str: =%"=="" exit /b
- :loop
- call set "char=%%str:~%pos%,1%%"
- if "%char%"==" " (
- set /a pos-=1
- goto loop
- )
- if %pos% equ -1 (
- set "return=%str%"
- ) else (
- set /a pos+=1
- call set "return=%%str:~0,%pos%%%"
- )
- exit /b
- :setup
- N:\\10.21.119.168\AllDept
- O:\\scnfsvr01\AllDept
- P:\\scnfsvr01\Shared
- S:\\10.21.119.168\Shared
- Z:\\scnfsvr01\Air\Huawei CS
复制代码
作者: Batcher 时间: 2018-11-14 09:23
提取盘符的那个批处理不能修改吗?
作者: kingshui 时间: 2018-11-14 10:11
回复 2# flashercs
伸手党简单测试了下没用,先把in 里的for拿出来到外面试下了,效率问题可能是共享路径无法到达导致的。
先简单处理一下用着先,忙完再看看
先谢谢。
作者: kingshui 时间: 2018-11-14 10:13
回复 3# Batcher - @echo off
- for /f "delims=:" %%i in ('findstr /n "^:netdrive$" "%~f0"') do more ++%%i "%~f0" >.\backup\%username%.cmd
- for /f "tokens=2*" %%i in ('net use^|find ":"') do (
- setlocal enabledelayedexpansion
- set dr=%%j
- set dr=!dr:Microsoft Windows Network=!
- echo %%i!dr!
- endlocal)>>.\backup\%username%.cmd
- msg * Backup done!!
- exit /b
- :netdrive
- @echo off & title Network Driver Re-Map Tools for GWM/ Network Driver Re-Map is in progress...
- set /p _user=please enter your Domain ID:
- set /p _pw=Please enter your Domain PW:
- cls
- for /f "delims=: tokens=1,2*" %%a in ('for /f "delims=:" %%i in ^('findstr /n "^:setup$" "%~f0"'^) do @more ++%%i "%~f0"') do (
- for /f "delims=\ tokens=1" %%x in ("%%b") do cmdkey /add:%%x /user:schenker_sc\%_user% /pass:%_pw%
- net use %%a: "\\%%~pnb" /p:y /y
- )
- msg * Done
- explorer
- exit
- :setup
复制代码
帮忙看看
记得当时提取盘符也纠结了好久,当时只做记录没有再用来还原就没再改了。
作者: Batcher 时间: 2018-11-14 12:56
回复 5# kingshui
第3行到第8行改成这样试试:- (for /f "tokens=2*" %%i in ('net use^|find ":"') do (
- setlocal enabledelayedexpansion
- set dr=%%j
- set dr=!dr:Microsoft Windows Network=!
- for /f "tokens=*" %%a in ("%%i!dr!") do (
- echo %%~fa
- )
- endlocal
- ))>.\backup\%username%.cmd
复制代码
作者: kingshui 时间: 2018-11-14 15:29
回复 6# Batcher
非常好,谢谢了。我没想到从源头上来解决。。这样省的时间会好多。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |