Bat批处理脚本

BAT FOR循环

https://www.cnblogs.com/adforce/p/3282591.html

在cmd窗口中:

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


在批处理文件中:

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

想知道当前目录下都有哪些文件吗?请用下面的代码:

@echo off
for %%i in (*.*) do echo "%%i"
pause

想列出当前目录下所有的文本文件吗?请用下面的代码

@echo off
for %%i in (*.txt) do echo "%%i"
pause

想列出只用两个字符作为文件名的文本文件吗?(注:实际上这个代码是输出少于或等于两个字符作为文件名的文本文件)请用下面的代码:

@echo off
for %%i in (??.txt) do echo "%%i"
pause

(一)为解析文本而生:for /f 的基本用法

 for /f 语句是以行为单位处理文本文件的

for /r 的作用及用法

for /r 目录 %%i in (元素集合) do 命令语句集合
BATファイルで文字列の切り出し
 
書式 意味
%V% 変数Vの値全体
%V:~m% m文字目から、最後まで
%V:~m,n% m文字目から、n文字分
%V:~m,-n% m文字目から、最後のn文字分を除いたもの
%V:~-m% 後ろからm文字目から、最後まで
%V:~-m,n% 後ろからm文字目から、n文字分
%V:~-m,-n% 後ろからm文字目から、最後のn文字分を除いたもの
%V:c1=c2% 文字c1を文字c2に置換する。それぞれ複数の文字を指定することも可能

Windowsコマンドでファイル名だけ/パスだけ取得する

詳細はcallコマンドのヘルプを参照するといい。下記callコマンドのhelpより引用。

バッチ パラメーター (%n) の置換は拡張されました。次のオプション構文
を使うことができます:

    %~1         - すべての引用句 (") を削除して、%1 を展開します。
    %~f1        - %1 を完全修飾パス名に展開します。
    %~d1        - %1 をドライブ文字だけに展開します。
    %~p1        - %1 をパスだけに展開します。
    %~n1        - %1 をファイル名だけに展開します。
    %~x1        - %1 をファイル拡張子だけに展開します。
    %~s1        - 展開されたパスは、短い名前だけを含みます。
    %~a1        - %1 をファイル属性に展開します。
    %~t1        - %1 をファイルの日付/時刻に展開します。
    %~z1        - %1 をファイルのサイズに展開します。
    %~$PATH:1   - PATH 環境変数に指定されているディレクトリを検索し、
                   最初に見つかった完全修飾名に %1 を展開します。
                   環境変数名が定義されていない場合、または
                   検索してもファイルが見つからなかった場合は、
                   この修飾子を指定すると空の文字列に展開されます。

修飾子を組み合わせて、複合結果を得ることもできます:

    %~dp1       - %1 をドライブ文字とパスだけに展開します。
    %~nx1       - %1 をファイル名と拡張子だけに展開します。
    %~dp$PATH:1 - PATH 環境変数に指定されているディレクトリを
                   検索して %1 を探し、最初に見つかったファイル
                   のドライブ文字とパスだけに展開します。
    %~ftza1     - %1 を DIR の出力行のように展開します。
原文地址:https://www.cnblogs.com/zerotomax/p/13172377.html