[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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
用什么分隔符呢?命令语句怎么写呢?

字符连在一起,你说哪里有分隔符呢?应用你所说的for /f加delims无法分隔,可以考虑其它方式:
  1. @echo off
  2. set var1=abcdefg
  3. :a
  4. set var2=%var1:~0,1%
  5. set var1=%var1:~1%
  6. echo,%var2%
  7. if not "%var1%"=="" goto :a
  8. pause
复制代码

TOP

回复 2# qixiaobin0715



1
感谢大神!


2
你的代码,有效。


3
鄙人的意思是,要显示成“a b c d e f g”,或"a-b-c-d-e-f-g",或"a,b,c,d,e,f,g",
而非单显。


4
大神,有解法吗?

TOP

回复 3# smatenchen
  1. @echo off
  2. set var1=abcdefg
  3. :a
  4. set var2=%var1:~0,1%
  5. set var1=%var1:~1%
  6. set var=%var%,%var2%
  7. if not "%var1%"=="" goto :a
  8. set var=%var:~1%
  9. echo,%var%
  10. pause
复制代码

TOP

回复 4# qixiaobin0715



1
感谢大神!


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


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


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


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


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

TOP

回复 5# smatenchen


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

TOP

回复 6# idwma


   

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

本帖最后由 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

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

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

第6个问题:你说对了。

TOP

回复 10# hfxiang



1,
感谢大神!


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


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


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


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

TOP

沙雕年年有!!!

TOP

回复 12# ZDG0000

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

回复 14# CrLf


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

TOP

返回列表