【.cmd】 バッチファイルスクリプト %9 【.bat】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/04/21(土) 22:37:58.49質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %8 【.bat】
http://toro.2ch.net/test/read.cgi/tech/1315844420/
【.cmd】 バッチファイルスクリプト %7 【.bat】
http://hibari.2ch.net/test/read.cgi/tech/1298873550/
【.cmd】 バッチファイルスクリプト %6 【.bat】
http://hibari.2ch.net/test/read.cgi/tech/1277465356/
【.cmd】 バッチファイルスクリプト %5 【.bat】
http://pc12.2ch.net/test/read.cgi/tech/1242268171/
【.cmd】 バッチファイルスクリプト %4 【.bat】
http://pc12.2ch.net/test/read.cgi/tech/1229955189/
【.cmd】 バッチファイルスクリプト %3 【.bat】
http://pc11.2ch.net/test/read.cgi/tech/1217860043/
【.cmd】 バッチファイルスクリプト %2 【.bat】
http://pc12.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
http://pc11.2ch.net/test/read.cgi/tech/1178281991/
0002デフォルトの名無しさん
2012/04/21(土) 22:42:13.450003デフォルトの名無しさん
2012/04/21(土) 22:45:04.45ほらみろ
0004デフォルトの名無しさん
2012/04/21(土) 22:46:15.83ライブラリを作ろう。
0005デフォルトの名無しさん
2012/04/21(土) 23:35:46.520006デフォルトの名無しさん
2012/04/22(日) 12:01:47.420007デフォルトの名無しさん
2012/04/22(日) 13:22:07.65初心者乙
@echo ^>^>1乙
0008デフォルトの名無しさん
2012/04/22(日) 13:52:39.882012/04/22 12:01:47 21 1乙
0009デフォルトの名無しさん
2012/04/26(木) 20:25:04.13でXXXの条件が%%iがsで終わっていたらというのにしたいんですがどうすればいいですか?
c:\windows, c:\usersなどはexec1
それ以外ならexec2に分岐したいのです
0010デフォルトの名無しさん
2012/04/26(木) 22:01:31.720011デフォルトの名無しさん
2012/04/26(木) 22:22:55.380012デフォルトの名無しさん
2012/04/26(木) 23:30:31.05set s="%%~i"
call :sub "%%~i"
)
exit
:sub
if "%s:~-2%=="s" (exec1 "%~1") else (exec2 "%~1")
exit /b
0013デフォルトの名無しさん
2012/04/27(金) 13:48:36.220014デフォルトの名無しさん
2012/04/27(金) 22:03:54.88pushd X:\エロ画像 || goto :eof
rem カレントディレクトリのファイルをMD5ハッシュ値にリネーム 要md5sum
for %%i in (*) do for /f "usebackq delims= " %%j in (`md5sum "%%~i"`) do ren "%%~i" "@%%j%%~xi"
rem 16個のサブフォルダに振り分け
for %%i in (0 1 2 3 4 5 6 7 8 9 A B C D E F) do (mkdir @%%i&move @%%i*.* @%%i\)
mkdir 重複&move *.* 重複\
rem 画像をランダムに開く 要ruby
ruby -x "%~f0"
popd
goto :eof
#!ruby
`dir /s /b /a:-d`.split("\n").shuffle.each{|i| `start "" "#{i}"`; gets}
0015デフォルトの名無しさん
2012/04/28(土) 02:33:34.780016デフォルトの名無しさん
2012/04/29(日) 06:35:51.060017デフォルトの名無しさん
2012/04/29(日) 11:05:59.710018デフォルトの名無しさん
2012/04/30(月) 23:11:04.33これを変数に格納する事ってできますか?
C:\>a.bat ^^"&time /t
『a.bat』
================================
@echo on
set AAA=%1
set AAA=%~1
set "AAA=%1"
set "AAA=%~1"
================================
結果
================================
C:\>set AAA=" & time /t
23:08
C:\>set AAA=" & time /t
23:08
C:\>set "AAA=^" & time /t"
23:08
C:\>set "AAA=^" & time /t"
23:08
================================
0019デフォルトの名無しさん
2012/05/01(火) 13:51:05.530020デフォルトの名無しさん
2012/05/03(木) 15:46:04.57とやると途中からecho %i.%iとやったのと同じになるんですが
誰か理由わかりますか?
0021デフォルトの名無しさん
2012/05/03(木) 15:50:14.86じゃなくて
echo %i.[表示がおかしくなる直前のファイル名]
みたいな感じになってました
0022デフォルトの名無しさん
2012/05/03(木) 16:30:17.03ファイルにリダイレクトしても?
0023デフォルトの名無しさん
2012/05/03(木) 17:14:44.71十数行までは普通に出るんですが、途中からおかしくなる。
0024デフォルトの名無しさん
2012/05/03(木) 17:25:11.77%~fi
はどう?
0025デフォルトの名無しさん
2012/05/03(木) 17:54:55.42わからないのは
echo %i では問題ないのに
echo.%i 他スペース以外だと二重になってしまうことです。
この辺の理屈が知りたい。
0026デフォルトの名無しさん
2012/05/03(木) 18:49:34.220027デフォルトの名無しさん
2012/05/03(木) 18:52:31.26osのよるんじゃね?
0028デフォルトの名無しさん
2012/05/03(木) 19:07:47.32%iが空白だったときに echo は ONです っての見たくないから
ピリオド打つの癖になってるもんで。
0029デフォルトの名無しさん
2012/05/03(木) 19:18:08.15とかでもおかしい表示になってたのにデバッガ開いたら正常になった
原因はfor臭い
0030デフォルトの名無しさん
2012/05/03(木) 19:23:35.98XPでよくコマンドプロンプト表示がバグることがあるけど、
あれのMS公式見解ってないのかね?
エンドユーザにPCの情報採取してもらうのに
dir/a|findstr ほにゃらら
とかやらせて、DOS窓のスクショを送ってもらうんだけど
前にコンソール表示のバグらしき事象に騙されたことがあったんだけど、
リダイレクトで万が一既存ファイルを上書いてしまうリスクを考えると、
エンドユーザにリダイレクトはさせたくないんですよね
0031デフォルトの名無しさん
2012/05/03(木) 19:26:59.27ならよかんべ
0032デフォルトの名無しさん
2012/05/03(木) 19:31:38.85ピリオドはやめとけ
echo > echo.txt
for %i in (txt) do @echo.%i
0033デフォルトの名無しさん
2012/05/03(木) 19:34:57.69\もやめとけ
md echo
echo >echo\aaa.txt
for %i in (aaa.txt) do @echo\%i
0034デフォルトの名無しさん
2012/05/03(木) 20:08:24.030035デフォルトの名無しさん
2012/05/03(木) 20:14:10.010036デフォルトの名無しさん
2012/05/05(土) 00:00:21.170037デフォルトの名無しさん
2012/05/05(土) 01:15:10.650038デフォルトの名無しさん
2012/05/05(土) 01:50:32.710039デフォルトの名無しさん
2012/05/05(土) 22:12:33.580040デフォルトの名無しさん
2012/05/26(土) 11:26:56.87それらをbatファイルから入力させることは可能でしょうか?
0041デフォルトの名無しさん
2012/05/26(土) 12:42:34.47SET /? をよく読むんだ
0042デフォルトの名無しさん
2012/05/26(土) 14:51:14.05コマンドプロンプトで動作するプログラム(mysqlとかsqlite3)を実行中に標準入力を受け付けてるところに指定した文字列を入力したいだけなんですが
set pass=1234
mysql -u root -p
REM パスワード入力
REM ここでパスワード入力待ちになる
REM ここで変数passを入力したい
0043デフォルトの名無しさん
2012/05/26(土) 15:05:15.12標準入力のリダイレクトでダメなら、バッチファイルだけでは辛いかも
0044デフォルトの名無しさん
2012/05/26(土) 18:16:39.010045デフォルトの名無しさん
2012/05/27(日) 07:50:43.58set pass=1234
echo pass|mysql -u root -p
ではどうですか?
0046デフォルトの名無しさん
2012/05/27(日) 10:48:16.26試してみたのですが入力されませんでした
0047デフォルトの名無しさん
2012/05/27(日) 11:32:20.43バッチファイルにパスワードを晒すぐらいなら、普通に
mysql -u root --password=1234
でやれよw
0048デフォルトの名無しさん
2012/05/27(日) 12:18:47.200049デフォルトの名無しさん
2012/05/27(日) 12:34:45.05mysql -u root -pパスワード データベース名 < hoge.sql
0050デフォルトの名無しさん
2012/05/27(日) 13:45:14.710051デフォルトの名無しさん
2012/05/27(日) 15:15:53.180052デフォルトの名無しさん
2012/05/27(日) 15:44:07.22別の所で聞いてきます
0053デフォルトの名無しさん
2012/05/27(日) 15:48:56.09005445
2012/05/27(日) 16:10:13.24ごめん環境変数は参照時は%で括るんだったorz
set pass=1234
echo %pass%|mysql -u root -p
0055デフォルトの名無しさん
2012/05/28(月) 15:47:33.84セキュリティgdgdになるけど
0056デフォルトの名無しさん
2012/05/28(月) 18:24:18.67>>41が答えだろ
set /p pass=enter password
mysql -u root --password=%pass%
0057デフォルトの名無しさん
2012/05/29(火) 00:38:44.56まあ>>40が不明瞭だしその後のレスも結局何がしたいのか説明できていないが
0058デフォルトの名無しさん
2012/05/29(火) 01:50:20.43set /?
を,見ればすぐ分かることを仕込んでどんな相手なのか判断してたのかと
思って読んでたよw
0059デフォルトの名無しさん
2012/05/29(火) 02:18:43.400060デフォルトの名無しさん
2012/06/13(水) 18:47:03.350061デフォルトの名無しさん
2012/06/13(水) 21:07:40.690062デフォルトの名無しさん
2012/06/13(水) 22:10:33.280063デフォルトの名無しさん
2012/06/21(木) 02:28:07.82大量にデータがあるファイル内の[開始文字列]と[終了文字列範囲内]の文字を抽出するにはどうしたらいいのでしょうか。
分かりやすく例えますと、htmlファイル内の
検索範囲開始文字列:http
から
検索範囲終了文字列:.html
までをファイルに追記書き出しすると言うほうが分かりやすいでしょうか。
通常のhtmlファイル内には複数のURLがあるので、
私が指定している方法ですと、htmlファイル内のURLが
指定ファイルに列挙される形になります。
結果のファイルサンプルです。
----------result.txt----------
http://hogehoge.com/index.html
http://hogehoge.com/hello_world.html
http://hogehoge.com/hogehoge.html
http://hogehoge.co.jp/index.html
http://hogehoge.co.jp/programming.html
http://hogehoge.co.jp/debughtml
------------------------------
外部コマンドラインツールを利用してもOKです。
0064デフォルトの名無しさん
2012/06/21(木) 02:31:11.43set pass=1234
mysql -u root -p
mysqlが パスワード入力 ルーチンロード
mysqlがユーザからのパスワード入力を待機
ここでmysqlに%pass%のデータを送信させる。(ようするにパイプ)
じゃないかなって思います。
0065デフォルトの名無しさん
2012/06/22(金) 22:15:57.46for/?
set/?
if/?
echo/?
0066デフォルトの名無しさん
2012/06/23(土) 01:04:24.75Split.CMD
というバッチファイルをダウンロードしてきて
やってみたのですが、指定された文字を含む行が表示されるだけで
開始文字列から終了文字列まで、などの指定で一部分を切り出す事ができませんでした。。
0067デフォルトの名無しさん
2012/06/23(土) 06:13:58.31素直にあきらめるがよろし。
0068デフォルトの名無しさん
2012/06/23(土) 19:56:00.92@ECHO OFF
REM 使用法: 切り出し.CMD 開始文字列 終了文字列 ファイル
SETLOCAL ENABLEDELAYEDEXPANSION
(FOR /F "delims=[] tokens=1*" %%0 IN ('FIND /N /V ""') DO (
IF "!FLAG!"=="1" SET FLAG=2
IF "!FLAG!"=="3" SET FLAG=4
SET "LINE=%%1"
if defined line SET "LINE=!LINE:%1=!"
if defined line IF NOT "!LINE!"=="%%1" SET FLAG=1
SET "LINE=%%1"
if defined line SET "LINE=!LINE:%2=!"
if defined line IF NOT "!LINE!"=="%%1" SET FLAG=3
IF "!FLAG!"=="1" ECHO=%%1
IF "!FLAG!"=="3" ECHO=%%1
IF "!FLAG!"=="3" GOTO :EOF
IF "!FLAG!"=="2" ECHO=%%1
)
)<%3
0069デフォルトの名無しさん
2012/06/23(土) 23:25:47.79C:\TEST>切り出し-2chTEST.CMD 234 789 test.txt
1234567890
C:\TEST>
testファイルの中身です。
-----test.txt-----
HelloWorld
サンプルです
1234567890
Sample
[EOF]
---------------------------
どうも23456789と切り出ししてくれなくて困ってます。
0070デフォルトの名無しさん
2012/06/24(日) 00:06:38.110071デフォルトの名無しさん
2012/06/24(日) 00:12:02.93find
set
echo
で作れ
0072デフォルトの名無しさん
2012/06/24(日) 07:56:08.12どっちにしろ、! を含むファイルでおかしくなるとかあるから、素直にあきらめて
vbs とかでやれよ。
0073デフォルトの名無しさん
2012/06/24(日) 19:08:22.13なかなかこれといったcmd, powershellがまともに動くマルチタブのターミナルが出てこないな。
0074デフォルトの名無しさん
2012/06/26(火) 18:12:31.62はい。そうしてみます。
ありがとうございました。
0075デフォルトの名無しさん
2012/06/30(土) 15:34:24.45バッチお願いします
0076デフォルトの名無しさん
2012/06/30(土) 15:50:19.40> 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
丸投げするスレじゃないぞ。
あと、個人的には...
> ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
の方がいいと思う、バッチで文字列操作は結構トラップ多いから。
0077デフォルトの名無しさん
2012/06/30(土) 15:51:32.15set xxx="%%~I"
call ren "%%~I" %%xxx: =_%%
)
0078デフォルトの名無しさん
2012/06/30(土) 16:47:01.97ありがとうございます
これをサブフォルダ内まで効果を及ばせるのって可能でしょうか
0079デフォルトの名無しさん
2012/06/30(土) 21:10:04.77set xxx="%%~nxI"
call ren "%%~I" %%xxx: =_%%
)
0080デフォルトの名無しさん
2012/06/30(土) 22:14:41.84ありがとうございました
0081デフォルトの名無しさん
2012/07/05(木) 03:05:34.99C:\a\とD:\a\内のfile.datの更新日時を比較して、C:\a\file.datのほうが新しい場合、それをD:\a\にコピーするバッチを作りました
00 for %%c in (C:\a\file.dat) do set cdate=%%~tc
01 set cdate=%cdate:~2,2%%cdate:~5,2%%cdate:~8,2%%cdate:~11,2%%cdate:~14,2%
02 for %%d in (D:\a\file.dat) do set ddate=%%~td
03 set ddate=%ddate:~2,2%%ddate:~5,2%%ddate:~8,2%%ddate:~11,2%%ddate:~14,2%
04 if %cdate% GTR %ddate% xcopy "C:\a\file.dat" "D:\a\" /e /y
00で更新日時を取得して、01で「2012/07/05 02:36」を「1207050236」に変換します
02と03も同じようなことをして、04で比較とコピーを行います
それで今回、フォルダbやcなどが増えそうなので、folders.txtに名前を書かれたフォルダ全てを扱うためのバッチを作り直したのですが、
これがよく分からんのですが思ったように動きません
作り直したと言ってもFOR文をネストしただけなのですが
00 for /f %%f in (C:\folders.txt) (
01 for %%c in (C:\%%f\file.dat) do set cdate=%%~tc
02 set cdate=%cdate:~2,2%%cdate:~5,2%%cdate:~8,2%%cdate:~11,2%%cdate:~14,2%
03 for %%d in (D:\%%f\file.dat) do set ddate=%%~td
04 set ddate=%ddate:~2,2%%ddate:~5,2%%ddate:~8,2%%ddate:~11,2%%ddate:~14,2%
05 if %cdate% GTR %ddate% xcopy "C:\%%f\file.dat" "D:\%%f\" /e /y
06 )
05を伏せる代わりにpauseを入れて観察したところ、01と03に問題があるようで、file.datを見つけられていないようでした
少し粘ったのですが無理そうなので、「他の方法」を使いたいのですが、私の知識は浅すぎて皆目検討がつきません
そこで皆さんに「他の方法」を教えていただきたいのです。どうかよろしくお願いしますm(_ _)m
0082デフォルトの名無しさん
2012/07/05(木) 03:17:23.650083デフォルトの名無しさん
2012/07/05(木) 03:36:21.24setlocal
0084デフォルトの名無しさん
2012/07/05(木) 14:20:02.17>>83
robocopyなんて便利なものがあったとは・・・目から鱗です
本当にありがとうございましたm(_ _)m
0085初心者さん
2012/07/05(木) 18:27:23.50:loop
set /a p = p + 1
ping localhost -n 1 > nul
cls
echo %p%%%
if /i "%p%"=="100" goto:f
goto :loop
:f
echo finish
0086デフォルトの名無しさん
2012/07/10(火) 20:04:55.55フォルダ内にあるファイルをアクロバットリーダーを使って印刷するバッチです
印刷は出来るのですがpdf以外のファイルがあるとエラーが出て
それが大量なのでいまいち使いづらいです
pdfのみに絞るもしくは、他のファイルは無視をする方法教えてくれませんか
〜〜〜〜〜〜〜〜〜〜〜〜
for %%i in (*) do (
START ACRORD32.EXE /n /t %%i
)
〜〜〜〜〜〜〜〜〜〜〜〜
0087デフォルトの名無しさん
2012/07/10(火) 20:19:02.99START ACRORD32.EXE /n /t %%i
)
0088デフォルトの名無しさん
2012/07/10(火) 22:05:30.310089デフォルトの名無しさん
2012/07/14(土) 13:04:36.13動いてることを検出できるバッチファイルの作り方おしえれ
0090デフォルトの名無しさん
2012/07/14(土) 15:04:20.910091デフォルトの名無しさん
2012/07/14(土) 17:34:05.470092デフォルトの名無しさん
2012/07/14(土) 17:41:16.310093デフォルトの名無しさん
2012/07/18(水) 16:59:27.47拡張子ごとのファイルパスをsetする方法を教えてください
0094デフォルトの名無しさん
2012/07/18(水) 21:32:19.99あとは自分で考えろバカ
0095デフォルトの名無しさん
2012/07/19(木) 21:44:23.72ありがとう
バカですんません
0096デフォルトの名無しさん
2012/07/20(金) 08:19:03.56for文中のcopyで1個ずつ足し続ける→カウント20になったら出力ファイル名変更
これもっと賢い方法あると思うんです、どう書けばいいでしょうか?
0097デフォルトの名無しさん
2012/07/21(土) 01:50:31.100098デフォルトの名無しさん
2012/07/21(土) 04:18:40.67copy *識別子.txt group識別子.txt
これで入出力が1回ですんで時間短縮になりました
0099デフォルトの名無しさん
2012/07/21(土) 16:37:15.190100デフォルトの名無しさん
2012/07/21(土) 16:39:53.520101デフォルトの名無しさん
2012/07/22(日) 00:30:28.46■ このスレッドは過去ログ倉庫に格納されています