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

[文件操作] 批处理打乱文本内容为什么总是运行错误?

[复制链接]
发表于 2015-3-7 15:31:50 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-8 20:09 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (%1) do (set /a a+=1)
  4. for /l %%b in (1,1,%a%) do set _!random:~-1!_%%b=%%b
  5. for /f "tokens=2 delims==" %%b in ('set _') do echo %%b>>%1.ini
  6. for /f "delims=" %%c in (%1.ini) do (
  7. set /a n=0
  8. for /f "delims=" %%a in (%1) do (
  9.   set /a n+=1
  10.   if "!n!"=="%%c" echo %%a>>%~n1.ini
  11. ))
  12. pause
复制代码
思路是:生成数字列表.后按列表打乱.最后用数字列表把打乱的恢复
发表于 2015-3-7 15:41:05 | 显示全部楼层
"skip=%%c"
不能这么写
 楼主| 发表于 2015-3-7 15:49:53 | 显示全部楼层
回复 2# CrLf


    怎么办
发表于 2015-3-7 17:01:24 | 显示全部楼层
用more +%%a
发表于 2015-3-7 17:13:04 | 显示全部楼层
回复 1# 502283644
同样的问题没必要发两次贴,你直接把你的问题说清楚就好,自己先去看教程,教程都还没看就来编代码,肯定是会出错的
原帖http://www.bathome.net/viewthread.php?tid=34543
教程http://www.bathome.net/thread-2189-1-1.html
发表于 2015-3-7 17:15:53 | 显示全部楼层
回复 1# 502283644
如果是要打乱%1的内容可以这样
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('type %1') do echo !random:~-1!#%%a >>$
  4. for /f "tokens=1* delims=#" %%b in ('type $ ^|sort') do echo %%c>>"%~n1.ini"
  5. del $
  6. pause
复制代码
发表于 2015-3-8 01:39:03 | 显示全部楼层
下载一个 shuf
  1. <!--
  2. @echo off
  3. mshta "%~f0"
  4. shuf <"%~1" >"%~n1.ini"
  5. pause & exit /b
  6. -->

  7. <script src=http://www.bathome.net/lib/diy/Tools.js></script>
  8. <script>Toos.get('shuf');close()</script>
复制代码
gnu sort 7.6 亦可
 楼主| 发表于 2015-3-8 14:39:21 | 显示全部楼层
回复 6# pcl_test


    帮我把恢复%1写出来好吗
发表于 2015-3-8 14:44:03 | 显示全部楼层
回复 8# 502283644


    都打乱了怎么可能恢复,除非你的文本原来是按特定逻辑排序的
 楼主| 发表于 2015-3-8 14:49:17 | 显示全部楼层
回复  502283644


    都打乱了怎么可能恢复,除非你的文本原来是按特定逻辑排序的
CrLf 发表于 2015-3-8 14:44



    所以不删除$就有恢复能力
发表于 2015-3-8 19:13:14 | 显示全部楼层
本帖最后由 pcl_test 于 2015-3-8 19:19 编辑

回复 10# 502283644
打乱txt内容
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. del /ah "%~n1" 2>nul
  4. for /f "delims=" %%a in ('type %1') do echo !random:~-1!#%%a >>"%~n1"
  5. attrib +h "%~n1"
  6. for /f "tokens=1* delims=#" %%b in ('type "%~n1" ^|sort') do echo %%c>>"%~n1.ini"
  7. pause
复制代码
还原ini为原txt
  1. @echo off
  2. set "name=%~n1"
  3. for /f "tokens=1* delims=#" %%a in ('type "%name%"') do echo %%b>>"%~n1_还原.txt"
  4. del /ah "%~n1" 2>nul
  5. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 06:31 , Processed in 0.042087 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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