【DOSコマンド】for文の中で変数をカウントアップしたい。
【現在のソース】
for %%i in (\\hoge\hoge\*.*) do (
echo %%i,%%~ziバイト >> log.txt
type nul > %%i
)
【現在の処理内容】
とあるフォルダの中になる全ファイルのパス、サイズをログファイルに書き出し、、
全ファイルを0バイトにクリアする。
【やりたいこと】
ログファイルにファイルパス、サイズを書き出す際に連番を出力したい。
例)
1,\\hoge\hoge\aaa.txt
2,\\hoge\hoge\ddd.txt
3,\\hoge\hoge\123.txt
【現在までに試みた方法】
for文の外で「set n=0」。
for文の中で「set /a n=%n%+1」「echo %%n」
【環境】
XP Pro Version2002 SP2
DOSコマンドの変数に関する理解がいまひとつで、よくわかりません。
ご存知の方がいらっしゃいましたらご教示いただけると幸いです。
No.3
- 回答日時:
set bit=0
for %%i in (\\hoge\hoge\*.*) do (
call :Roop "%%i" "%%~zi"
rem type NUL > %%i
)
goto :EOF
:Roop
echo\
echo Roop 1para=%1 2para=%2
set /a bit=%bit% + 1
echo bit=%bit%
echo %bit%, %~1,%~2バイト >> log.txt
goto :EOF
でできますね。他にも
FOR /L %変数 IN (開始,ステップ,終了) DO コマンド [コマンドパラメータ]
を組み合わせた方法とかもありますね。
この種類の質問が出る方は、ヘルプとかリファレンスを全く見ない方ですね。よく読んで理解すれば、ヘルプにヒントが全部記載されています。
オンラインヘルプだけで上記を作成できます。他の方が、setlocalで拡張機能のOn状態で実行を勧めていますが、これもコマンドラインで
>setlocal /?
でやり方がでます。
cmdでのコマンドの使い方や、文字列の操作は
> cmd /?
ででます。ここに今回の問題も記載されていて、
goto /?
call /?
for /?
set /?
を見れば上記のスクリプトや、No1,2の やり方も全て出てきます。
ヘルプのサンプルで、じっくりと実証してみましょう。
No.2
- 回答日時:
for文の中でカウントアップ後の表示をさせるには Tacosanさんのとおり 遅延環境変数の展開 すれば できます。
バッチに setlocal enabledelayedexpansion を追加
setlocal enabledelayedexpansion
set /a n=0
for ・・・ (
set /a n=n+1
echo !n!
)
とりあえず ね まあ 一行に 表示させるには また 工夫されてください。
参考に
http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/se …
No.1
- 回答日時:
とりあえず
echo %%n
がおかしいことは理解できますね?
でも, それは措いても遅延展開しないとダメかもしれない. コマンド拡張を有効にして !n! とか.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- JavaScript javascriptで文字分割は、 split() などメソッド不要??? 4 2023/02/06 22:50
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- その他(プログラミング・Web制作) pythonのcondaコマンドの仕様について 2 2022/06/24 00:13
- その他(開発・運用・管理) バッチファイルで特定のファイル・ディレクトリ以外を削除する方法について 4 2022/05/31 14:03
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
batである文字列内に特定の文字列が含まれているか確認したい
その他(プログラミング・Web制作)
-
バッチファイルでカウントアップするには
その他(プログラミング・Web制作)
-
-
4
バッチ処理でファイルの中身を変数に入れるやり方
その他(プログラミング・Web制作)
-
5
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
6
バッチファイル 文字列にスペースがある場合
その他(プログラミング・Web制作)
-
7
コマンドプロンプトで相対パスの取得
その他(コンピューター・テクノロジー)
-
8
Batch: フォルダ内の特定のファイル以外を全て削除
その他(プログラミング・Web制作)
-
9
batファイルでレジストリキーの有無を確認したい
その他(プログラミング・Web制作)
-
10
SQLPLUSで結果を画面に表示しない
Oracle
-
11
oracle spool SJIS → UTF-8
Oracle
-
12
ファイルの先頭行を全て削除したい
Windows Vista・XP
-
13
バッチファイルで変数の中身をファイル出力したい
UNIX・Linux
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
バッチで特定文字が含まれる先...
-
【Linux】findコマンドの表示順
-
Linuxで*をつかってファイル移...
-
CentOS/リダイレクションに改行...
-
BATファイルによるfcコマンドで...
-
windows7でmingwのgrepで漢字の...
-
sedで置換した値を変数にセット...
-
renameコマンドでファイル名か...
-
DOSでテキストファイルの中のあ...
-
ファイルリストを印刷したい。
-
スラッシュ"/"を削除したい
-
ショートカットのリンク先(フ...
-
OSXで常に最後に表示される文字...
-
ファイルの先頭に文字を追加す...
-
Linux上で固定長ファイルのレイ...
-
○行目から□行目だけを表示する...
-
Dirコマンドでフォルダ内ファイ...
-
エクセルの表にヘンな枠が・・・
-
TOPコマンドで表示するCPU使用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
バッチで特定文字が含まれる先...
-
【Linux】findコマンドの表示順
-
スラッシュ"/"を削除したい
-
Linuxで*をつかってファイル移...
-
【DOSコマンド】for文の中で変...
-
*.txtファイルの最終行だけ参照...
-
DOSでテキストファイルの中のあ...
-
○行目から□行目だけを表示する...
-
renameコマンドでファイル名か...
-
UNIXで、ディレクトリを比較し...
-
CentOS/リダイレクションに改行...
-
dosバッチを使用して昇順に
-
ファイルの先頭に文字を追加す...
-
ファイルリストを印刷したい。
-
標準出力とリダイレクトを同時...
-
コマンドプロンプト net user...
-
unixのdiffコマンドの動作について
-
コマンドプロンプトでUSBメモリ...
-
OSXで常に最後に表示される文字...
おすすめ情報