怎么用批处理创建文件夹一个带有内容的txt文件到指定目录?

如何创建批处理文件
我的图书馆
如何创建批处理文件
如何创建批处理文件?
    不要听了批处理文件就感到很神气,其实这东西很简单的.你用过记事本没有?用过? 好的.将记事本打开,什么都不用写,然后选择文件,保存.保存类型选择所有文件,文件名则命名为 *.bat 这个*代表是文件名,你可以随便的起.保存好之后,看看你保存的地方,会出现一个白色窗口里有个黄色齿轮的图标.这东西就是你创建的批处理文件,双击他就可以运行,但他现在由于里面没有输入任何命令,所以他运行了并不会做任何事情.当我们想往这个*.bat文件中添加东西时,只要右键选择他,然后选择编辑,就可以打开记事本往内输入命令了.
  批处理文件中的命令是什么?
  批处理文件中的命令暂时先可以理解为dos命令,等稍后深入理解了以后再进行解释.批处理顾名思义就是一大堆东西堆在一起处理.换句话说就是往里面写一条条dos命令,然后按顺序挨个执行,效果跟你在cmd里敲dos命令是一个效果.只不过用批处理写好之后,要运行只要双击下就可以运行了.而不用再一遍一遍的重复的往里面打命令.这就是批处理文件的好处.
  除了运行dos命令之外,他还可以支持选择结构if,循环结构for,goto等,与c有点类似,但远没有c全面,并且编写语言十分不规范.
  批处理语法:
先讲个最基本的东西 @echo off
  echo的意思是回旋,这里的意思就是回显,echo off意思就是关闭回显.前面的@表示echo off 这一行也不会回显你可以试着去掉@和整行去掉.@的另一个功能是在执行完批处理文件时自动恢复命令回显。如果第一句用的是ECHO OFF,那么在执行完批处理文件以后不会显示命令提示符。
举个例子:如果我们先创建一个1.bat文件,往里面输入:
dir 然后保存在c:\下.然后我们运行cmd,进入c盘根目录下,输入1.bat,则显示:
C:\&dir驱动器 C 中的卷没有标签。卷的序列号是 0C5D-07FF
C:\ 的目录
&& 00:45&&&& &DIR&&&&&&&&&&& WINDOWS<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="25" month="8" year="-08-25&& 00:51&&&& &DIR&&&&&&&&&&& Documents and Settings
...........
如果将1.bat内容修改成
然后再在cmd里输入1.bat,则会显示
C:\&echo off       //因为运行了echo off,所以没有显示dir命令,直接显示了结果驱动器 C 中的卷没有标签。卷的序列号是 0C5D-07FF
C:\ 的目录
&& 00:45&&&& &DIR&&&&&&&&&&& WINDOWS<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="25" month="8" year="-08-25&& 00:51&&&& &DIR&&&&&&&&&&& Documents and Settings
.....
如果将1.bat文件修改成:
@echo offdir
则显示成:
C:\&1.bat&&&&&&&&& //与前面不同,并没有显示echo off,原因是加了@,所以不显示@后面的内容.又因为加
        //了echo off,所以后面的命令不显示,直接显示结果驱动器 C 中的卷没有标签。卷的序列号是 0C5D-07FF
C:\ 的目录
&& 00:45&&&& &DIR&&&&&&&&&&& WINDOWS<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="25" month="8" year="-08-25&& 00:51&&&& &DIR&&&&&&&&&&& Documents and Settings
通过以上的比较,相信你对echo off命令已经充分掌握了.现在已经1点了...写得累啊!!!洗澡睡觉去了
----------------------
早晨6点就被拉起来了...我命苦啊,那么继续写吧
----------------------
接下来讲的是call命令:
call是打电话的call,而不是"喔靠"的靠:).call的意思为调用.假如有2个批处理文件a.bat和b.bat.如果我想运行a.bat的当中运行b.bat.如何运行呢?其实很简单,只要在a.bat文件中输入call命令,则可以在a.bat运行的当中,运行b.bat,等b.bat运行完之后,继续执行a.bat
call命令格式:
CALL [drive:][path]filename [batch-parameters]
&& batch-parameters&&& 指定批处理程序所需的命令行信息。
举例如下,我们在c盘根目录下创建a.bat文件,内容为:
echo this is a.bat
call d:\b.bat
然后在d盘根目录下创建b.bat,内容为:
echo this is b.bat
保存后,打开cmd,进入c盘根目录,然后输入1.bat,显示如下:
C:\&echo this is a.batthis is a.bat
C:\&call d:\b.bat
C:\&echo this is b.batthis is b.bat
C:\&echo donedone
由例子很容易看出来,是先运行a.bat的内容,直到遇到call b.bat后,则调用b.bat,运行完b.bat后,再返回a.bat接着运行call b.bat后面的echo done语句,直至将a.bat的所有批处理命令运行完.
注:里面有个[batch-parameters]里面的所指的参数是什么,知道的朋友能否告知,不胜感激.
PAUSE 命令暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处理程序中使用该命令。
表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释).
同时你可以用两个冒号来替代rem.如: ::等同于一个rem.但他们有个区别,就是用::作注释的话他是不回显的,即使你打echo on强制回显也没有同的.同时rem可以在config.sys中加注释.
语法: rem[commnet]
批处理文件参数:
有点变成基础的人都知道函数有参数.批处理文件也有参数.
我打个比方,希望能帮助没有语言基础的人也能看的非常明白. 
我从例子里开始吧.首先在c盘根目录下创建一个批处理文件 a.bat,里面输入内容
然后打开cmd,然后进入c盘根目录.输入:a "this is a canshu"
得到结果如下:
C:\&a.bat "this is a test"
C:\&echo "this is a test""this is a test"
  输入的a "this is a canshu"中,a为新建的a.bat的文件名a(后面的.bat可写也可不写),而a后面的 "this is a canshu"这句话就是参数,写在这的参数,在程序运行中就将参数自动放到批处理程序中去.那么放在什么位置呢?就是放在 %1的地方.
  看了例子,让我们看看整个关于参数的定义如何:
  批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符"%"。   %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。//我们上个程序的例子里就有%1,他就是参数,而输入中"this is a test"作为参数就直接放到%1的位置,于是程序就变成了 echo "this is a test".
  再举几个例子帮助你理解:
C:根目录下一批处理文件名为b.bat,内容为: @echo off type %1     //type为dos中的输出命令,可以用来输出文本文件的内容,比如我们新建一个1.txt文件
         //里面输入内容,保存.进cmd,如果输入1.txt则看不了1.txt文件内容,但是如果我
         //想看怎么办呢?这时候可以用type命令,只要在cmd里输入type 1.txt就能显示
         //1.txt文件中的内容了 type %2 那么运行C:\&b a.txt b.txt %1 : 表示a.txt %2 : 表示b.txt
于是上面的批处理命令就变成了
type a.txt
type b.txt于是上面的命令将顺序地显示a.txt和b.txt文件的内容。
没有编程基础的人可能要问,干什么要弄个参数啊?在后面加个参数多麻烦啊?直接往里面写不就好了啊?!其实这样想有对的方面也有错的方面.还是举个例子说明吧.
第一步还是在c盘根目录下新建一个批处理文件,我们取名仍为a.bat.往里面的内容输入为:
ping %1  //ping命令可以简单理解为测试一台机器开着还是没有开,如果开着的话,他就回给你回送回应.
然后进cmd,我们想测试下163的服务器是不是开着,则输入a
  对于知道ping命令的人,可以打ping进行检查,但如果想ping的人不知道ping命令怎么用,那怎么办啊?这时候你就可以把命令预先输入到批处理文件中,保存好,然后让不会用的人进cmd,运行你的批处理文件,文件名后面加上他要ping 的网站地址就行了.换句话说,他想ping 163就直接加163的网址,想ping sina就直接加sina的网址.这样只要输入一个参数,而不用改程序本身,整个程序的通用性就大大提高了.
  这是对于一个简单的ping命
令,你或许觉得用参数不值得,还是直接改不就好了啊.但如果程序有很多条,你一下找不到在哪改怎么办啊?所以,不管你是菜哥,菜弟,菜姐,菜妹,只要运行
下,输入参数,结果自己就会出来,不用再象你一样,考虑怎么编写批处理文件.人家只要知道是输入什么东西能让批处理程序运行,而编写的人则想的是如何让不
懂程序的人能运行程序.
  批处理参数就这么简单,不知道你理解了没有?但如果你想深一步了解批处理参数,可以接着往下看,如果不想深入了解,知道现在这么多也就够了.
以下粉红色内容为网上资料.
====================================
  因为参数只有1%-9%,但当我们要引用第十个或更多个参数时, 就必须移动DOS 的参数起始指针. shift 命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数, 类似C 语言中的指针操作. 图示如下:
初始状态, cmd 为命令名, 可以用 %0 引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 ^&&&&& ^&&&&&&& ^&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^ &&&&&&&&
&&&&&&&&& &&&&&&& &&&&&&&&&
&&&&&&&& &&&&&&&& &&&&&&&&& &&&&&&&&
&&&&&&&& & %0&& %1&&&& %2&&& %3&&& %4&&& %5&&& %6&&&& %7&&& %8&&& %9
经过1次shift后, cmd 将无法被引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 ^&&&&& ^&&&&&&& ^&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^ &&&&&&&&
&&&&&&&&& &&&&&&& &&&&&&&&&
&&&&&&&& &&&&&&&& &&&&&&&&& &&&&&&&&
&&&&&&&& & %0&& %1&&&& %2&&& %3&&& %4&&& %5&&& %6&&&& %7&&& %8&&& %9
经过2次shift后, arg1也被废弃, %9指向为空, 没有引用意义 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 ^&&&&& ^&&&&&&& ^&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^&&&&&& ^ &&&&&&&&
&&&&&&&&& &&&&&&& &&&&&&&&&
&&&&&&&& &&&&&&&& &&&&&&&&& &&&&&&&&
&&&&&&&& & %0&& %1&&&& %2&&& %3&&& %4&&& %5&&& %6&&&& %7&&& %8&&& %9
遗憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 内核命令行环境下, shift 才支持 /n 参数, 可以以第一参数为基准返复移动起始指针. =================
if goto choice for高级语法
今天就写到这吧,我收拾收拾东西准备滚蛋回学校了.可能if goto choice for高级语法要在沈阳才能完成了,祝我好运吧.
======================
学校的"网吧"终于算重新开张了,抓紧时间把剩下的写完
说得通俗点,if就相当于我们白话里的如果.
举个例子:如果a喜欢b,那么a就要娶b. 这句话翻译成计算机语言就成了
if a喜欢b a就要娶b.
当然拉,计算机不可能理解a喜欢b,a就要娶b这两句话,这里只是举个例子让你方便理解.
if语句一共有3种模式,如下:
IF [NOT] string1==string2 commandIF [NOT] EXIST filename commandIF [NOT] ERRORLEVEL number command
 NOT&&&&&&&&&&&&&&& 指定只有条件为 false 的情况下, Windows XP 才应该执行该命令。
 ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为 true。
 string1==string2&& 如果指定的文字字符串匹配,指定条件为 true。
 EXIST filename&&&& 如果指定的文件名存在,指定条件为 true。
 command&&&&&&&&&&& 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟一个执行 ELSE关键字后的命令的 ELSE 命令。
我们先讲解第一种:
IF [NOT] string1==string2 command
自然语句意思:如果string1==string2,那么执行command
下面再举个能实际应用的if语句.
自然语句:如果输入的参数为3,那么显示"a=3"
计算机语句:
@echo offif "%1"=="3" echo "a=3"
@echo offif %1==3 echo "a=3"
注意:当要测试的时候,因在cmd底下,输入1.bat 3.因为这里用了是传递参数,具体看文章前部分"批处理文件参数".
IF [NOT] EXIST filename command
这条命令用语检测文件是否存在.如果存在,执行command.如果不存在,则什么也不显示.
如:我们想检查e盘根目录下是否有一个叫2.txt的文件.如果存在,则显示exist.如果不存在,则什么也不显示.
批处理命令如下:
@echo offif exist e:\2.txt echo "exist 2.txt"
IF [NOT] ERRORLEVEL number command
这个我引用点资料,感觉别人写得更详细,引用部分为粉色字部分:
if errorlevel &数字& 待执行的命令
很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
==== 注 =========== 返回值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式:
if errorlevel 1 set el=1 if errorlevel 2 set el=2 if errorlevel 3 set el=3 if errorlevel 4 set el=4 if errorlevel 5 set el=5 ...
当然, 也可以使用以下循环来替代, 原理是一致的: for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e //此处为一个for循环,后面会继续                        介绍到的,看不懂可以先跳过去
if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于 set命令的 "重复" 赋值特性, 由大到小排序会导致较小的返回码 "覆盖" 较大的返回码.
另外, 虽然 if errorlevel=&数字& command 也是有效的命令行, 但也只是 command.com 解释命令行时将 = 作为命令行切分符而忽略掉罢了
choice命令
for命令其实就是一个循环命令,如果我们想重复一个语句,就可以用for命令.通过for命令,可以控制循环的次数等.
FOR %variable IN (set) DO command [command-parameters]
&& %variable&& 指定一个单一字母可替换的参数。&& (set)&&&&&& 指定一个或一组文件。可以使用通配符。&& command&&&& 指定对每个文件执行的命令。&& command-parameters&&&&&&&&&&&&& 为特定命令指定参数或命令行开关。
在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
  不知道你你看懂了没有,其实还是很容易理解的,还是举个例子吧.我想用type打印所有c盘根目录下的bat文件和txt文件.dos底下命令就是 type *.bat *.txt.先将该文件保存在c盘根目录下,名称为a.bat
用for命令如下:
for %%t in (*.bat *.txt) do type %%t
%%t其实就是代表的一个参数,他的内容在in() 里面括号里的内容.也就是说这句话里的%%t就变成了*.bat *.txt了.do就是做的意思,执行type命令,而type后面是%%t,而%%t又是*.bat *.txt.所以原来这句命令的意思就变成了:
type *.bat *.txt
执行时进cmd,然后到c盘根目录下输入a.bat就可以打印出c盘根目录下所有扩展名为.bat和.txt的文件内容了.
这里要注意:in后面有个空格.
在xp底下,for命令扩展名被起用因此for的功能变得更加强大.下面讲一个真正的循环.
FOR /L %variable IN (start,step,end) DO command [command-parameters]
&&&& 该集表示以增量形式从开始到结束的一个数字序列。&&&& 因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生&&&& 序列 (5 4 3 2 1)
里面第一个1在start的位置,意思是起始位置,第2个1在step位置,英文意思是跨步,在这里面的意思是每次增量为1.后面的5在end的位置,意思是结束时的大小.
这句话的意思就是从1(start)开始增加,每次增加1(step),一直到变到5(end)为止.
这个有什么用呢?其实我感觉这个东西的用处还是很大的.举个最简单的例子,我们想重复回显"i am the best"这句话,重复显示10遍.那么for命令如下:
for /L %%e in (1,1,10) do echo "i am the best"
这时,cmd就会重复输入"i am the best"10遍.
===============================================
看完整篇文章了吗?咳...我写的不容易啊....
现在不知道你对bat有了什么样的理解,我现在的感觉就是bat就是dos命令的组合,你把dos命令全写进bat命令,只要运行下bat就会挨个执行dos命令,这无疑提供了不少的方便。
下面我再举些实例.
删除默认共享:
对于默认共享不知道你了解多少,反正留着是个隐患,现在唯一的办法好象只能做个bat文件进行删除.命令如下:
net share ipc$ /deletenet share admin$ /deletenet share c$ /deletenet share d$ /deletenet share e$ /delete
里面的c d e为你的盘符。如果你只有一个分区,那么写到net share c$ /delete为止就可以了。如果你有n个分区,那么就挨个写下去。
net share d$ /deletenet share e$ /delete
net share f$ /delete
net share g$ /delete……
登陆到局域网的机器快捷方式(对方机器有密码且为2000或以上系统)
[密码] /user:[用户名]explorer
bat文件备份注册表
set regfile=%date%&&& //设置变量,下面出现%regfile%的都自动替换“当天date”
if exist "%regfile%" goto end&&& //如果发现当天date命名的目录,跳到文件尾。md temp&&&&&&& //建temp目录
call 1.bat&&&&&& //调用1.batdel&& 1.bat&&&&&&&&&&ren 2.bat 1.batren 3.bat 2.batren 4.bat 3.batecho move&& "%regfile%"&& temp &4.bat&& //写 移动“当天date命名的目录”到temp的bat文件&& 。
md "%regfile%"&&& //建当天date命名的目录cd "%regfile%"&& //进入
reg export hkcu hkcu.reg&&& //导出注册表reg export hklm hklm.reg&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //HKEY_CURRENT_USER&& 缩写hkcu 。存放当前用户个人数据&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //HKEY_LOCAL_MACHINE&& 缩写hklm 。系统的核心数据 cd.. deltree /y&& temp &nul&&&&&&&& ////返回上级目录&& ,删temp文件夹 :end
TA的最新馆藏[转]&
喜欢该文的人也喜欢如何通过批处理给一个文件夹下的所有文本文件头添加一段文字?
[问题点数:40分,结帖人linton]
如何通过批处理给一个文件夹下的所有文本文件头添加一段文字?
[问题点数:40分,结帖人linton]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2011年12月 Windows专区大版内专家分月排行榜第二2011年10月 Windows专区大版内专家分月排行榜第二2011年8月 Windows专区大版内专家分月排行榜第二2011年3月 Windows专区大版内专家分月排行榜第二2009年1月 Windows专区大版内专家分月排行榜第二2008年12月 Windows专区大版内专家分月排行榜第二2008年11月 Windows专区大版内专家分月排行榜第二2008年10月 Windows专区大版内专家分月排行榜第二2008年9月 Windows专区大版内专家分月排行榜第二
2009年3月 Windows专区大版内专家分月排行榜第三2009年2月 Windows专区大版内专家分月排行榜第三
2011年4月 Windows专区大版内专家分月排行榜第三2011年2月 Windows专区大版内专家分月排行榜第三
2011年4月 Windows专区大版内专家分月排行榜第三2011年2月 Windows专区大版内专家分月排行榜第三
2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
2011年4月 Windows专区大版内专家分月排行榜第三2011年2月 Windows专区大版内专家分月排行榜第三
匿名用户不能发表回复!|批处理如何根据指定文本里列出的文件夹名和txt文件名批量创建文件夹和txt文件 - BAT求助&讨论 -
批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!
帖子176&积分170&技术0 &捐助0 &注册时间&
批处理如何根据指定文本里列出的文件夹名和txt文件名批量创建文件夹和txt文件
本帖最后由 pcl_test 于
19:55 编辑
批处理如何批量新建文件夹,并在指定文件夹中生成TXT?
单独新建文件夹或者单独建TXT就会,但连贯在一起的应该怎样操作呢?
新建文件夹 & & & & TXT内容
刘一& & & &      英语第一
陈二& & & &
张三& & & &
李四& & & &      语文第一
王五& & & &
赵六& & & &
孙七& & & &      数学第一
周八& & & &
吴九& & & &
文字能说明清楚的勿发图片PB -6
帖子742&积分1455&技术63 &捐助30 &注册时间&
把你写的单独新建文件夹和单独建TXT的代码发出来,我帮你连贯在一起。
帖子176&积分170&技术0 &捐助0 &注册时间&
需要新建的文件夹放在1.txt中,但新建的TXT不知有什么方法可以对应建在相应的文件夹中。
for /f %%a in (1.txt) do (if not exist &%%a& (md &%%a&&&echo.&&%%a\%%a.txt&))
帖子742&积分1455&技术63 &捐助30 &注册时间&
@echo off
for /f %%a in (1.txt) do (
& & if not exist &%%a& (
& && &&&md &%%a&
& && &&&type nul & &%%a\%%a.txt&
& & )
)复制代码我试了一下,可以把文件创建到对应的文件夹下。
能否举例说明这跟你的实际需求区别在哪里?
帖子176&积分170&技术0 &捐助0 &注册时间&
& & 区别在于,这个建的TXT和文件夹名称一致,不是建对应想要的TXT。
帖子742&积分1455&技术63 &捐助30 &注册时间&
& & 文件夹和文件名的对应关系也在1.txt里面是吗?请把1.txt压缩一下传上来吧,我试试
帖子176&积分170&技术0 &捐助0 &注册时间&
& & 1.txt的内容就是新建文件夹的名称
帖子742&积分1455&技术63 &捐助30 &注册时间&
& & 我想帮你编写代码的话,如何才能猜测出什么叫做对应想要的TXT呢?
帖子176&积分170&技术0 &捐助0 &注册时间&
文件夹名:刘一& && &&& 对应的TXT:英语第一
有些是不需要添加TXT的。
帖子742&积分1455&技术63 &捐助30 &注册时间&
& & 请把记录对应关系的那个文件压缩一下传上来
帖子176&积分170&技术0 &捐助0 &注册时间&
以下是参考附件!
务必在顶楼一次性把问题和结果交代清楚,勿 ...PB -30
帖子8624&积分37461&技术207 &捐助510 &注册时间&
乐于助人技术 + 1
【扫描二维码捐助论坛的朋友请留言注明论坛账号】
【批处理在线视频分享】
【微信公众号、微信群、QQ群】
帖子176&积分170&技术0 &捐助0 &注册时间&
& & 非常感谢,纠结了几天的问题终于解决了!
[通过 QQ、MSN 分享给朋友]---鏈夊叧鎵瑰?鐞嗗懡浠ゃ

我要回帖

更多关于 批处理创建快捷方式 的文章

 

随机推荐