
标题: [文本处理] 批处理如何读取目前U盘的盘符并替换文件内容? [打印本页]
作者: HerveyHu 时间: 2020-6-28 00:22 标题: 批处理如何读取目前U盘的盘符并替换文件内容?
本帖最后由 HerveyHu 于 2020-7-1 23:37 编辑
起因是这样的,因为经常使用不同的电脑,电脑里面的有个专业软件需要使用一些收藏的文件,每次都要用U盘拷贝到电脑的指定盘符,比较麻烦,现在有个想法是这样的:当U盘插入电脑时,U盘里的bat档可以自动读取目前U盘的盘符,并替换掉指定文件(文件后缀是.pro格式)里面的多个相同路径前的盘符(如原始为D:\ 替换为新的假设为E:\ ,盘符后面的路径不动),以达到可以直接使用U盘里的文件资料,感谢了!!!
作者: binghejin 时间: 2020-6-28 14:21
pro格式的文件用记事本软件能打开吗?把pro格式的文件发上来看看内容是啥样的
作者: HerveyHu 时间: 2020-6-28 16:39
回复 2# binghejin
可以打开的
作者: binghejin 时间: 2020-6-28 17:37
本帖最后由 binghejin 于 2020-6-28 17:39 编辑
以下为修改盘符并生成一个新的文件。- @echo off
- cls
- for /f "tokens=1 delims=\" %%a in ('echo %cd%') do (set pan=%%a)
- for /f "delims=" %%z in (config.pro) do (
- for /f "tokens=1 delims= " %%a in ('echo %%z') do (
- for /f "tokens=2 delims=:" %%b in ('echo %%z') do (
- echo %%a %pan%%%b>>new.txt
- )
- )
- )
复制代码
以下为在源文件上修改盘符(注意保存原文件)- @echo off
- cls
- for /f "tokens=1 delims=\" %%a in ('echo %cd%') do (set pan=%%a)
- for /f "delims=" %%z in (config.pro) do (
- for /f "tokens=1 delims= " %%a in ('echo %%z') do (
- for /f "tokens=2 delims=:" %%b in ('echo %%z') do (
- echo %%a %pan%%%b>>new.txt
- )
- )
- )
- del /q config.pro>nul
- ren new.txt config.pro
复制代码
作者: HerveyHu 时间: 2020-6-29 22:00
回复 4# binghejin
大佬,考到U盘里测试了一下,好像不行,部分内容被串改,运行时还报错了,麻烦用新的附档再改改看,感谢!
作者: binghejin 时间: 2020-6-30 17:55
你这两次给的附件不一样啊,现在给的附件是正确的文件么?
作者: HerveyHu 时间: 2020-6-30 19:15
回复 6# binghejin
本来源文件不太方便给,但是看见报错比较多,索性就发上来了,麻烦了,只要U盘插上,读取U盘当前盘符,替换掉文档里的盘符就好了,后面的路径不变,感谢!!
作者: yhcfsr 时间: 2020-6-30 21:12
本帖最后由 yhcfsr 于 2020-6-30 21:14 编辑
方案逻辑:
1.电脑运行VBS脚本(VBS可以无窗口静默运行),后台循环监控U盘插入事件.
2.如果有U盘插入,检测U盘是否存在指定路径的.pro文件(防止对其他U盘误操作).
3.检测电脑是否存在指定路径的.pro文件(如无必要可省略这一步),如果有则复制U盘指定路径.pro文件覆盖.
4.将VBS脚本加入任务计划,设置登陆运行;或者其他开机启动VBS脚本的方式.
5.想要免费快速解决,最好加入论坛QQ群.否则付费留联系方式,自有高手前来.
作者: binghejin 时间: 2020-7-3 16:58
必须运行在U盘根目录下,config.pro文件也必须在U盘根目录下,不然就需要根据情况修改,否则会出错。- @echo off
- cls
- echo set fso = createobject("scripting.filesystemobject")>>yk.vbs
- echo set stream = fso.opentextfile("config.pro",1)>>yk.vbs
- echo content = stream.readall()>>yk.vbs
- echo call stream.close()>>yk.vbs
- echo content = replace(content,"D:\","%cd%")>>yk.vbs
- echo set stream = fso.opentextfile("config.pro",2)>>yk.vbs
- echo call stream.write(content)>>yk.vbs
- echo call stream.close()>>yk.vbs
- call yk.vbs
- del /q yk.vbs
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |