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

[文本处理] 【已解决】批处理如何把文本结果竖排变横排?

[复制链接]
发表于 2015-3-21 21:34:30 | 显示全部楼层 |阅读模式
本帖最后由 freesoft00 于 2015-3-23 16:05 编辑

mountvol|find ":\"
执行的结果是
  1. C:\
  2. D:\
  3. E:\
  4. F:\
  5. K:\
复制代码
如何让这些结果文本横排显示,在一行显示,再者,如何去除后面的:\只显示盘符

如何把结果作为下一步执行的变量,类似下面(下面的批处理不正确,我只是表达意思)
for %%a in (mountvol|find ":\") do (
echo %%a

评分

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

查看全部评分

发表于 2015-3-21 21:44:54 | 显示全部楼层
本帖最后由 bailong360 于 2015-3-21 22:23 编辑
  1. @Echo Off
  2. For /F "Delims=: " %%i in ('mountvol^|find ":"') Do If Not "%%i:"=="%~d0" Set /P =%%i <nul
  3. Echo;
  4. For /F "Delims=: "  %%i in ('mountvol^|find ":"') Do If Not "%%i:"=="%~d0" Echo %%i
复制代码
已修改
 楼主| 发表于 2015-3-21 21:45:43 | 显示全部楼层
另外一个要求是,列出来当前的盘符后,如何用命令过滤掉当前的盘符,盘符是从a到z的吧,过滤掉当前有的,然后取第一个当前系统中没有的盘符作为变量显示出来。
 楼主| 发表于 2015-3-21 22:03:28 | 显示全部楼层
回复 2# bailong360


     第一个是横排显示的,是否可以去掉:\
发表于 2015-3-21 22:04:11 | 显示全部楼层
回复 3# freesoft00
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "str=CDEFGHIJKLMNOPQRSTUVWXYZ"
  4. for /f "tokens=1* delims=: " %%a in ('mountvol^|find ":"') do set "s=!s!%%a "
  5. echo,!s!
  6. for %%i in (!s!) do set "str=!str:%%i=!"
  7. echo !str:~,1!
  8. pause
复制代码
 楼主| 发表于 2015-3-21 22:14:49 | 显示全部楼层
ok了,谢谢各位的热心!
 楼主| 发表于 2015-3-21 22:52:02 | 显示全部楼层
另外一个命令

fsutil fsinfo drives执行的解决是横排,
  1. 驱动器: C:\: D:\  E:\  F:\
复制代码
同样也是,把上面的结果作为变量参数传递到下面的命令执行,下面的命令比如是echo吧,上面的运行结果中有一个驱动器:是需要去掉的。
 楼主| 发表于 2015-3-21 22:53:46 | 显示全部楼层
比如我要执行fsutil fsinfo drives列出来本地硬盘,然后把执行后的结果作为盘符变量
执行后面的格式化命令
format %str%
发表于 2015-3-21 23:49:04 | 显示全部楼层
本帖最后由 pcl_test 于 2015-3-21 23:51 编辑

回复 9# freesoft00
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1*" %%a in ('fsutil fsinfo drives ^|find ":"') do (
  4. for %%i in (%%b) do set a=%%i & echo format !a:~,2!
  5. )
  6. pause
复制代码
 楼主| 发表于 2015-3-22 00:04:51 | 显示全部楼层
回复 10# pcl_test


    thank you!
 楼主| 发表于 2015-3-22 03:53:09 | 显示全部楼层
回复 10# pcl_test


    再请教:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  4. set var=%%i
  5. set drive=!var:~-2!
  6. fsutil fsinfo drivetype !drive!|find "驱动器">nul&& echo !drive!

  7. )
  8. pause
复制代码
这段在xp下面没有问题,而在win7下面只有一个盘符A(我的系统中有A盘)
发表于 2015-3-22 08:53:57 | 显示全部楼层
  1. @Echo Off
  2. For /F "Skip=1" %%i In ('Wmic LogicalDisk Where DriveType^="3" Get Caption') Do Echo Format %%i
复制代码
感觉Wmic在这个时候要好用一点
 楼主| 发表于 2015-3-22 10:14:56 | 显示全部楼层
回复 13# bailong360
Format C:
Format D:
Format E:
Format


   
结果中多了一行后面没有盘符的format
另外,wmi在pe中有很多不支持,而其它的方法只要pe中有文件比较好实现
发表于 2015-3-22 11:02:04 | 显示全部楼层
回复 14# freesoft00


    第一个问题只要加上2>nul就行了

不支持wmi这倒是没想到...
发表于 2015-3-22 12:20:43 | 显示全部楼层
回复 12# freesoft00
你这个代码本身就只是列出一个盘符,有什么问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 12:55 , Processed in 0.018583 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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