rem 1ファイルずつ作成。copy nul apple
copy nul avocado
copy nul banana
copy nul cinnamon
copy nul melon
mkdir a
mkdir b
mkdir c
mkdir m
rem echoでコマンドを確認for/f"usebackq tokens=*"%a in (`dir /a-d /b`) do @(set X=%a && echo move !x!!X:~0,1!)
rem echoを外して実行!for/f"usebackq tokens=*"%a in (`dir /a-d /b`) do @(set X=%a && move !x!!X:~0,1!)
rem 結果確認dir /s /b
C:\usr\workspace\cmd\20140215\Q1\a
C:\usr\workspace\cmd\20140215\Q1\b
C:\usr\workspace\cmd\20140215\Q1\c
C:\usr\workspace\cmd\20140215\Q1\m
C:\usr\workspace\cmd\20140215\Q1\a\apple
C:\usr\workspace\cmd\20140215\Q1\a\avocado
C:\usr\workspace\cmd\20140215\Q1\b\banana
C:\usr\workspace\cmd\20140215\Q1\c\cinnamon
C:\usr\workspace\cmd\20140215\Q1\m\melon
第2問
ファイル名に含まれる空白をアンダーバーにしてリネームする
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rem ファイル作るよ!copy nul "私は 蟹"copy nul "オシャレな 蟹"copy nul "足が 10本"rem echoでコマンドを確認for/f"usebackq tokens=*"%a in (`dir /a-d /b`) do @(set X=%a&& echo ren "!x!""!X: =_!")
rem echoを外して実行!for/f"usebackq tokens=*"%a in (`dir /a-d /b`) do @(set X=%a&& ren "!x!""!X: =_!")
rem 結果確認dir /b
オシャレな_蟹
私は_蟹
足が_10本
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rem コマンドを確認for/L%a in (20140101,1,20141231) do @(call isdate %a && echo %a)
rem リダイレクトを付けて実行!for/L%a in (20140101,1,20141231) do @(call isdate %a && echo %a>%a)
rem 結果確認dir /s /b
rem echoでコマンドを確認for/f"usebackq tokens=*"%a in (`dir /b 2014*`) do @(set X=%a&& echo if not exist !X:~0,6! mkdir !X:~0,6!&& echo move %a !X:~0,6!)
rem echoを外して実行!for/f"usebackq tokens=*"%a in (`dir /b 2014*`) do @(set X=%a&& if not exist !X:~0,6! mkdir !X:~0,6!&& move %a !X:~0,6!)
rem エラー!?ちょっと構文を買えてやりなおしfor/f"usebackq tokens=*"%a in (`dir /b 2014*`) do @(set X=%a&& echo if not exist !X:~0,6! mkdir !X:~0,6!&& echo move %a !X:~0,6!)>> exec.bat && @cmd /c exec.bat
rem なんかエラー出るけどファイルは移動するorzrem 結果確認
tree /f
フォルダー パスの一覧
ボリューム シリアル番号は 3AC0-14F1 です
C:.
│ exec.bat
│
├─201401
│ 20140101
│ 20140102
│ 20140103
│ 20140104
以下略!
第6問
mkdir -p jot -s / -b a 100 && touch jot -s / -b a 100/b && cd jot -s / -b a 100 するやつ
1
2
3
4
5
6
7
8
9
10
11
12
rem 3階層くらいで実験(for/L %a in(1,1,3)domkdir a && cd a)&& copy nul b
cd ..\..\..
rd /s a
rem 一気に実行!(for/L %a in(1,1,100)domkdir a && cd a)&& copy nul b
rem 結果確認echo%CD%
C:\usr\workspace\cmd\20140215\Q6\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
echo%CD%| sepa "\\"echo%CD%| sepa "\\"| find /c "a"
第7問
先ほど作ったファイルbを、50番目のaディレクトリに移動する。
1
2
3
4
5
6
7
8
9
10
11
12
13
rem とりあえず、元のディレクトリに戻ってから。rem ディレクトリ名を作成できるか実験setX1=&& (for /L %a in (1,1,100) do @set X1=!X1!a\) && echo !X1!rem いけそうなので実行。ただし、面倒なので分割実行。setX1=&& (for /L %a in (1,1,100) do @set X1=!X1!a\) && echo !X1!setX2=&& (for /L %a in (1,1,50) do @set X2=!X2!a\) && echo !X2!move%X1%b %X2%b
rem 結果確認dir /s /b b
dir /s /b b | sepa "\\"| find /c "a"