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

【挑战】批处理如何创建仅含一个nul字符的文件

本帖最后由 plp626 于 2011-5-13 12:51 编辑

如题,如何用 cmd的内部命令 创建 仅含一个nul字符的文本文件

没有挑战的意思,只是问题难度较大

这个问题的思考了来源于 。。。 暂时 不好描述, 总之就是解决批处理的三方工具依赖性缺陷。

我知道用外部命令debug,fsutil可方便 创建ascii码为nul的字符 文件,但是,这和我解决问题的目的有些本末倒置。

思考片刻,无果,觉得不可能实现,不知大家有何看法。谢谢。。
===============================

PS: 批处理变量结束符为 NUL 字符,所以用变量的方法 ,我本人认为是行不通的,建议大家把注意力放在 copy prompt 。。。还有 for /f usebackq ('....')的bug,以及其他内部命令bug上,并加以利用(个人观点)

鉴于论坛过滤一些特殊的ascii码字符,大家给代码的时候描述思路或者上传源文件即可。

转义符?^..............

TOP

  1. echo nul>1.txt
复制代码
这样么?在文件里显示nul字符??

TOP

本帖最后由 老刘1号 于 2017-7-17 15:39 编辑
  1. >tmp Echo AA==
  2. certutil -decode tmp null.txt
  3. del tmp
复制代码
base64看多了……现在直接手写…

TOP

原生的外部命令最容易的方式
41楼
http://bbs.bathome.net/redirect. ... 2284&pid=165948

TOP

如是想生成一个空文件,如下命令即可(在命令提示符中)
type nul>cheng.txt

TOP

re: qzwqzw

有个疑问,你14楼的代码为什么要多一行 echoo >nul?如此也可方便生产0x00字符;

刚才看到 ...
plp626 发表于 2011-5-14 13:27


echoo.com $# 创建的是"-"
echoo.com $$创建 但是"="

echoo.com $$$# 又创建的不是"=-" 而是"4#"

TOP

不用外部指令就没法实现
  1. fsutil file createnew (filename) 1
复制代码
1

评分人数

TOP

回复 38# yiwuyun


测试环境:Win7 SP1 x64
没看到0x00在哪里。你是怎么看到的?

c:\Test>type nul>1.txt

c:\Test>xxd 1.txt

c:\Test>

其实有一个非常简单的方法来判断,如果文件里面包含NUL(0x00),它的文件大小不可能是零。
你也试试别人的代码吧,看看是不是跟你自己的代码得到的结果不一样:

c:\Test>cmd /u/cecho.>$.tmp

c:\Test>findstr/vrc $.tmp>2.txt

c:\Test>xxd 2.txt
0000000: 00                                       .

c:\Test>

TOP

回复 38# yiwuyun


    请问你的测试环境是……?我这里type nul>1.txt也仅是建一个空白文件而已,没有任何内容。不含0x00字节。

TOP

回复 37# DAIC


   你试了我的代码吗。1.txt中就不是NUL字符。是0x00

TOP

回复 36# yiwuyun


    是你理解错了,仅含一个nul字符的文本文件不是0字节空文件。

TOP

搞毛线啊,弄那么复杂。
type nul>1.txt
0字节的空文件,不晓得是不是这个意思。

TOP

本帖最后由 plp626 于 2011-6-11 14:35 编辑

参考26楼的思路,某前得到如下结论:

批处理可以仅依赖外部命令findstr 生成仅含一个nul(ascii 0x00)字符的文件:
  1. cmd /u/cecho.>$.tmp
  2. findstr/vrc:$ $.tmp>0x00.txt
  3. del $.tmp
复制代码
1

评分人数

TOP

33# Demon


汗一个,当时没看明白,现在一回顾才有点懂了,确实可行

TOP

返回列表