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

[ 新手习题 5 ] 批处理倒序输出

[复制链接]
发表于 2011-8-18 00:19:18 | 显示全部楼层
  1. @if not defined debug @echo off
  2. set var=!好你,nc.emohtab.sbb
  3. for /l %%i in (17 -1 0) do call set/p a=%%var:~%%i,1%%<nul&ping -n 1 127.1>nul
  4. pause >nul
复制代码
发表于 2012-7-9 22:03:21 | 显示全部楼层
本帖最后由 悬崖之树 于 2012-7-15 12:13 编辑

回复 2# tireless


   
@echo off & setlocal EnableDelayedExpansion
set str=!好你,nc.emohtab.sbb
:loop
set /a n+=1
set /p=!str:~-%n%,1!<nul
if "!str:~%n%!" neq "" goto loop
echo.&pause


这个批处理最后将多循环一次,把""加在结果字符串的最后。
应改成:
  1. @echo off & setlocal EnableDelayedExpansion
  2. set str=!好你,nc.emohtab.sbb
  3. :loop
  4. set /a n+=1
  5. if "!str:~%n%!" neq ""  (
  6. set /p=!str:~-%n%,1!<nul&goto loop)
  7. echo.&pause
复制代码
晕,我自己搞错了,不好意思。真是不改菜鸟本色啊!!

评分

参与人数 1PB +6 收起 理由
cjiabing + 6 谦虚好学~!

查看全部评分

发表于 2012-10-20 21:16:02 | 显示全部楼层

  1. @echo off
  2. echo nc.enohtab.sbb > text.txt
  3. for /f "tokens=1-3 delims=." %%i in (text.txt) do (echo %%k %%j %%i)
  4. del text.txt /q
  5. pause
复制代码
发表于 2012-11-5 12:04:43 | 显示全部楼层
回复 15# leaparde


    @echo off & setlocal EnableDelayedExpansion
set str=!好你,nc.emohtab.sbb
:loop
set /a n+=1
set /p=!str:~-%n%,1!<nul
if "!str:~%n%!" neq "" goto loop
echo.&pause
     代码中的 set /p=!str:~-%n%,1!<nul
什么意思  和set /p=%str:~-%n%,1%<nul
的区别是什么
发表于 2012-11-5 12:46:36 | 显示全部楼层
回复 34# o00o00o00


批处理中的变量延迟扩展、变量嵌套
http://www.bathome.net/thread-2899-1-1.html
发表于 2013-1-27 23:19:47 | 显示全部楼层
  1. @echo off
  2. set Enter=!好你,nc.emohtab.sbb
  3. set Output=
  4. :Start
  5. if not "%Enter%"=="" (
  6. set Output=%Output%%Enter:~-1%
  7. set Enter=%Enter:~0,-1%
  8. goto Start
  9. )
  10. echo %Output%
  11. pause>nul
复制代码
发表于 2014-12-23 21:54:33 | 显示全部楼层
有个限制,第一个字符只能出现一次
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "aa=!好你,nc.emohtab.sbb"
  4. for /l %%a in (1 1 999999999) do (
  5. if "!aa:~-%%a,1!" neq "!aa:~0,1!" (set /p =!aa:~-%%a,1!<nul) else (call :end))
  6. :end
  7. echo %aa:~0,1%
  8. pause>nul&exit
复制代码
发表于 2014-12-23 22:14:07 | 显示全部楼层
回复 37# ann


    尽量不要用 for /l %%a in (1 1 999999999) 这种方法,效率太低。
发表于 2014-12-24 14:26:32 | 显示全部楼层
本帖最后由 shelluserwlb 于 2014-12-24 14:33 编辑

通用程序
  1. @echo off
  2. set "str=!好你,nc.emohtab.sbb"
  3. echo 原字符串:  %str%
  4. :1
  5. set "str1=%str1%%str:~-1%"
  6. set "str=%str:~0,-1%"
  7. if defined str (goto :1) else (echo 新字符串:  %str1%)
  8. pause>nul
复制代码
发表于 2014-12-25 18:54:35 | 显示全部楼层
回复 38# DAIC


    我想用for /l %%a in ( ) do (set /p =!aa:~-!js!,1!<nul&set /a js+=1)。但是它不能识别为变量位移,不能输出想要的结果
发表于 2014-12-25 20:39:07 | 显示全部楼层
回复 40# ann


变量嵌套的语法错了,参考:
http://bbs.bathome.net/thread-2899-1-1.html
发表于 2014-12-28 17:11:31 | 显示全部楼层
回复 41# DAIC


    看了,没懂,,,
发表于 2014-12-28 22:49:59 | 显示全部楼层
回复 41# DAIC


    那请问按我这个思路,这一句改怎么写呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 02:25 , Processed in 0.023335 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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