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

[文件操作] 批处理命令for /f 集里的("abcdefg"),如何分成7段?

本帖最后由 smatenchen 于 2022-6-2 21:04 编辑



for /f 集里的("abcdefg"),如何分成a,b,c,d,e,f,g,这样的7段?


1
for /f “delims=?”%%i in ("abcdefg") do echo %%i
如何将"abcdefg"分成7段,再显示成“a b c d e f g”,或"a-b-c-d-e-f-g",或"a,b,c,d,e,f,g"呢?


2
用什么分隔符呢?命令语句怎么写呢?

回复 14# CrLf
  1. @echo off
  2. for /f "delims=" %%i in ('cmd /q /u /c set /p "=abcdefg" ^< nul ^| find /v ""') do (
  3.     echo,%%i
  4. )
  5. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 16# CrLf

TOP

回复 15# hfxiang


    原理是 cmd /u 会将内容按unicode编码输出,其中原本的单字节字符后会额外加一个 00(NUL字符),而more会将 00 变成 0D 0A(回车换行符)

    确实只要一层for就可以了,写的时候记成more会把NUL替换成空格,所以多写了一层

TOP

回复 14# CrLf


太厉害了!!!但不知其所以然。
同时俺在Win10命令行下,如下单条指令也能出同样的结果,太神奇了
cmd /u /c "echo abcdefg"|for /f "delims=" %a in ('more') do @echo %a

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. cmd /u /c "echo abcdefg" | for /f "delims=" %%a in ('more') do (
  3. for %%b in (%%a) do echo %%b
  4. )
复制代码

TOP

回复 12# ZDG0000

TOP

沙雕年年有!!!

TOP

回复 10# hfxiang



1,
感谢大神!


2,
查看call的帮助,没有这类用法的讲解。


3,
for的帮助,也没细讲,如何用转义,用变量……。


4,
这样,学起来就费劲了!
得从其它地方去一点点积累了。


5,
微软,甚不是个玩艺哎!

TOP

第2、第3及第5其实是同1个问题:do call set 主要为解决for内字符串截取时“~”后跟变量的问题;

第4个问题:省掉 call,写成 do set,行不行你可自行测试(代码已是现成,其实测试才是最好的老师);

第6个问题:你说对了。

TOP

本帖最后由 smatenchen 于 2022-7-19 20:34 编辑

回复 8# hfxiang



@echo off
setlocal EnableDelayedExpansion
set "var1=abcdefg"
set "var2="
for /l %%i in (0,1,6) do call set "var2=!var2!-%%var1:~%%i,1%%"
echo;%var2:~1%
endlocal

1,
感谢大神!

2,
其中,do call set,是什么用法?

3,
call不是用来调用其它批处理的吗?
怎么还可以有这样的用法吗?
具体含义,请大神细解一下。

4,
省掉call,写成do set,不行吗?

5,
%var1:~%%i,1%,这句含义明确,再在其外套一层%%,是何意呢?

6,
因为,其内有%%i,故也要仿照使用%吗?。

TOP

@echo off
setlocal EnableDelayedExpansion
set "var1=abcdefg"
set "var2="
for /l %%i in (0,1,6) do call set "var2=!var2!-%%var1:~%%i,1%%"
echo;%var2:~1%
endlocal

TOP

回复 6# idwma


   

TOP

回复 5# smatenchen


    5给道友推荐一本书 '龙书'

TOP

回复 4# qixiaobin0715



1
感谢大神!


2
大神的代码,有效。感谢!


3
这样传递变量,蛮有趣的。


4
代码的世界,人类的思维不好懂。


5
二进制思维,如何跃升为人类思维,自然语言?


6
人类的思维,是如何运作的?怎么完成逻辑运算?

TOP

返回列表