トップページ⇒tech
1001コメント279KB

【.cmd】 バッチファイルスクリプト %5 【.bat】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/05/14(木) 11:29:31
前スレ
【.cmd】 バッチファイルスクリプト %4 【.bat】
http://pc12.2ch.net/test/read.cgi/tech/1229955189/
01531512009/08/04(火) 21:46:32
>>152
ぐ・・・powershell というのは、DOSとは違うものですね?
やっぱDOSでは無理でしょうか。
でもヒントありがとうございます。
0154デフォルトの名無しさん2009/08/04(火) 22:01:28
psインストールしてdosから呼べばいいんだよ。
どうしてもコマンドがいいならwgetなんてのもあるけど結局別途インストールが必要。
01551512009/08/04(火) 23:24:50
>>154
なるほど、wgetなら聞いたことがあるのでそっちでやってみます。
インストールといってもコピーするだけなんですね、できそうかも。
どうもありがとう。
0156デフォルトの名無しさん2009/08/05(水) 20:55:21
空のサブディレクトリを削除するコマンドとして

for /f "delims=*" %i in ('dir /s /ad /b ^| sort /r') do @rmdir "%i" 2> nul

なるコマンドをネット上で見たのですが
"iの使い方が誤っています"なるエラーが出てしまいます。
引用変数を上手く渡すにはどうすればいいのでしょうか。
osはwin2kです。
0157デフォルトの名無しさん2009/08/05(水) 21:20:45
%i -> %%i
01581562009/08/05(水) 21:28:17
�d�d
0159デフォルトの名無しさん2009/08/07(金) 14:16:38
call省く方法ってないの?
.bat, .cmdとその他を区別して呼び出すのがだるすぎるぜ
0160デフォルトの名無しさん2009/08/07(金) 14:56:34
区別せず、いつもCALL使えばええがな
0161デフォルトの名無しさん2009/08/07(金) 14:58:37
関連付けにcmd /c付ければええがな
0162デフォルトの名無しさん2009/08/07(金) 18:37:36
http://pc11.2ch.net/test/read.cgi/prog/1209467166/183

@echo off
setlocal
set A=0

:LOOP
if %A% EQU 100 goto :END
set /a A=A+1
set /a B=A%%3
set /a C=A%%5
set /a D=B+C
if %D% EQU 0 goto :FB
IF %B% EQU 0 goto :FIZZ
IF %C% EQU 0 goto :BUZZ

echo %A%
goto :LOOP

:FIZZ
echo Fizz
goto :LOOP
:BUZZ
echo Buzz
goto :LOOP
:FB
echo FizzBuzz
goto :LOOP
:END
endlocal
@echo on
0163デフォルトの名無しさん2009/08/07(金) 19:38:07
そのスレ、何回かバッチ出てるね
0164デフォルトの名無しさん2009/08/07(金) 21:18:28
>>163
thx!本当だw

見直してたら、もう少し洗練出来る事に気が付いた。
0165デフォルトの名無しさん2009/08/07(金) 21:22:49
【海外】中国・山西省の病院で陰茎が二本ある男の子が生まれる。[8/6]★part2
http://schiphol.2ch.net/test/read.cgi/parksports/1217581664/l50
0166デフォルトの名無しさん2009/08/13(木) 14:57:11
aaa.exeとbbb.exeをパラに実行してどっちかが終わったらccc.exeを実行
ってどう書けばいい?
0167デフォルトの名無しさん2009/08/16(日) 21:04:19
start cmd /c "aaa.exe & waitfor /si hoge"
start cmd /c "bbb.exe & waitfor /si hoge"
waitfor hoge
ccc.exe
0168デフォルトの名無しさん2009/08/17(月) 00:14:28
offlineで使えないよ
0169デフォルトの名無しさん2009/08/17(月) 16:40:27
ドラッグ&ドロップでJavaを実行できるファイルを作りたいんですけど

javac %~n1.java
java %~n1
pause

これだとディレクトリがC:\WINDOWSでファイルが見つかりません
.javaファイルがあるディレクトリか,バッチファイルがあるディレクトリに
移動するにはどうすればいいでしょうか
0170デフォルトの名無しさん2009/08/17(月) 16:58:56
%0
0171デフォルトの名無しさん2009/08/17(月) 17:14:31
あぁ %~n1 ←これの意味分からずに使ってるのかw
0172デフォルトの名無しさん2009/08/17(月) 17:21:01
できました^^
cd %~dp0
0173222.248.109.702009/08/17(月) 17:45:38
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その4
『俺の経歴カックイイだろ?』

http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★

> 984 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:11:14.95 ID:PVAf+dux0
> 俺の簡単な年表(笑)
> 高二秋:自前のパソコンゲット
> 高三春:コテハンとしてデビュー、指揮官見習い
> 高三秋:指揮官デビュー
> 大一:新しい武器の開発や、突撃で数々の戦歴を残す
> 大二春:規制系キャップ取得、第一線から退く
> 大二夏:ネットでのゲーム作成プロジェクト始動
> 大二秋:政治系オフに参加
> 大二冬:最後の突撃、華々しく散る
> 大三春:政治系活動を本格始動
> 大三夏:三度目の選挙へ
>
> おまえらは、後を継ぐなよw

----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
0174デフォルトの名無しさん2009/08/20(木) 15:23:16
renで同じファイル名があった場合上書きすることはできませんか?
0175デフォルトの名無しさん2009/08/20(木) 15:34:00
moveコマンドなら上書きできる
0176デフォルトの名無しさん2009/08/20(木) 17:39:04
なるほど
0177デフォルトの名無しさん2009/08/21(金) 21:54:04
あるフォルダの指定サイズ以下をファイルのみを隠しファイルにするにはどう組めば良いでしょう?
わかるかたいましたらよろしくお願いします。
0178デフォルトの名無しさん2009/08/21(金) 22:35:49
for
dir
if
%~zi
attrib
0179デフォルトの名無しさん2009/08/22(土) 06:11:21
それは本当に隠しファイルにする必要があるのか?
どういう用途に使うんだろう、と言ってみる
0180デフォルトの名無しさん2009/08/22(土) 13:50:21
ネットワークドライブをマウントさせるバッチファイルを作りたいのですが、

・学生番号(ユーザーID)とパスワードをユーザーにキーボード入力させる
・入力された値はコンピュータが保持する(今後ID/パスを入力しなくても接続できる)

といった形にしたいのですが、どう組めばいいでしょうか?
0181デフォルトの名無しさん2009/08/22(土) 14:17:08
リストの行を読み込むごとに、行番号が付いた変数をつけ続けることはできますか?
10行のリストを読んだら、var1からvar10までの変数を生成して欲しいのですが
0182デフォルトの名無しさん2009/08/22(土) 14:22:05
あれ、よくわからないけどできました・・・
for /F %%a in ( list.txt ) do (
set /a count = !count!+1
set line=line!count!
set !line!=%%a
)

echo !line9!
0183デフォルトの名無しさん2009/08/22(土) 20:22:45
>>178
ありがとうございます。
もうちょいヒント下さい。。。
0184デフォルトの名無しさん2009/08/22(土) 21:27:09
for
dir /?
if /?
attrib /?
0185デフォルトの名無しさん2009/08/25(火) 04:05:54
>>141
これ危なくないか?XP専用のようだけど
0186デフォルトの名無しさん2009/08/26(水) 23:51:11
echoに色つけるcechoと一文字読み取ってerrorlevelに返すreadkey作ったらいろいろ便利になった。
これでcmd&rubyであと5年は頑張れる。
PowerShellからは脱落したぜ…
0187デフォルトの名無しさん2009/08/27(木) 00:20:23
いらねー
0188デフォルトの名無しさん2009/08/27(木) 13:07:04
>>181-182です
リストの行ごとに番号を振るところまでできたんですが、
仮に9行目を得たいときは!line9!で呼び出すとして、
数字の部分はランダムで変えたいときはどうすればいいんでしょうか

set r=(ランダムな数字)
echo line!r!でline5なりline9なりで行の内容を呼び出したい
data=line!r!とする?
こんがらがってわけがわかりません
お知恵を貸してください
0189デフォルトの名無しさん2009/08/27(木) 14:03:43
>>188
ズバリ%RANDOM%がある。
範囲を1〜10にしたいなら
set /a r=%RANDOM % 10 + 1
のようにすればおk
0190デフォルトの名無しさん2009/08/27(木) 14:41:34
>>189
%RANDOM%なんてのがあるのか。それをふまえて俺も書いてみた
各行をvar1、var2、・・・という変数に入れといて、 !var%乱数%!でアクセスするという方針

set count=0
for /F %%a in (list.txt) do (
set /a count=count+1
set var!count!=line!count! : %%a
)
set /a r=%RANDOM% %% count + 1
set data=!var%r%!
echo !data!
0191デフォルトの名無しさん2009/08/27(木) 19:23:18
prompt文字列を使って特殊文字をファイルに吐き出す方法って
どうやるんだっけ?
01921882009/08/27(木) 21:58:37
>>189
んー11しか出ないです

>>190
はーできました、ありがとうございます
set var!count!=〜とか!var%r%!ていう書き方もできるんですね、ここでつまづいてました
r=%RANDOM% %% count + 1の%%とは何でしょうか?
0193デフォルトの名無しさん2009/08/27(木) 22:33:48
% をエスケープしてる
0194デフォルトの名無しさん2009/08/27(木) 23:53:57
引数列挙って
for %%i in (%*) do echo %%i
で行けるのな。今までshift, if, goto で頑張ってたよ…
0195デフォルトの名無しさん2009/08/28(金) 01:45:53
>>186
わざわざ作らんでも
>echoに色つけるcecho
バッチでできるし
>一文字読み取ってerrorlevelに返すreadkey
Vistaにはchoiceがあるし
0196デフォルトの名無しさん2009/08/28(金) 08:23:19
choiceってVistaで復活したの?
0197デフォルトの名無しさん2009/08/28(金) 11:08:26
WinNT/2000/XPでは別売のリソースキットに収録されてるCHOICE.EXEを使うしかないけどな
0198デフォルトの名無しさん2009/08/28(金) 13:05:06
timeout入れるならsleep入れろよな>MS
0199デフォルトの名無しさん2009/08/28(金) 13:43:55
cat *.txt | sort
のつもりで
more *.txt | sort
ってやるとうまくいかないんだけど、どうすりゃいいの?
0200デフォルトの名無しさん2009/08/28(金) 13:49:30
なぜmoreを使う
cat ファイル名 相当なら type ファイル名 だろ
0201デフォルトの名無しさん2009/08/28(金) 13:54:36
typeもだめ
0202デフォルトの名無しさん2009/08/28(金) 17:21:53
ならばcat.batを作ればいい

------------ cat.bat
@echo off
for %%i in (%*) do type %%i
0203デフォルトの名無しさん2009/08/28(金) 22:11:17
>199
もしかして「.txtと拡張子のつく各ファイルを、ソートして表示」…しようとしてそのコマンドを書いたのか?
0204デフォルトの名無しさん2009/08/28(金) 22:54:01
>>203
やりたいことは
sort *.txt
だけど、Winのsortが
sort *.txt
できないので、その代替

>>202
それしかなさそう
たしかに
cat *.txt | sort
の代替になるけど、
sort *.txt
の代替にはならないみたい
ファイル末に改行がないと、行が継続されちゃう
あーやんなっちゃう
0205デフォルトの名無しさん2009/08/29(土) 00:31:29
常に開業されちゃうけどこういうのは?
for ... do (
  type %%i
  echo.
)
0206デフォルトの名無しさん2009/08/29(土) 04:32:18
dir /b *.txt | sort
0207名無しさん@そうだ選挙に行こう2009/08/30(日) 17:10:19
for /f "delims=" %%i in (*.txt) do echo %%i
0208名無しさん@そうだ選挙に行こう2009/08/30(日) 17:32:19
for /f delims^=^ eol^= %%i in (*.txt) do echo %%i
0209デフォルトの名無しさん2009/08/31(月) 07:10:55
ちょっと俺の書いた神コードを見てくれよ

set path_win=c:\windows
set path_bin=c:\windows\bin
set path_font=c:\windows\fonts

for /f "usebackq delims== tokens=1,2" %%i in (`set ^| findstr /b path_`) do if not exist "%%~j" echo %%i(%%j)がねーよ&exit /b 1

実行結果
path_bin(c:\windows\bin)がねーよ
0210デフォルトの名無しさん2009/08/31(月) 16:15:44
set path_
0211デフォルトの名無しさん2009/09/01(火) 23:12:07
バッチでできる?
http://pc12.2ch.net/test/read.cgi/software/1250213672/766
0212デフォルトの名無しさん2009/09/02(水) 00:07:13
一行が凄く長くなければ。
0213デフォルトの名無しさん2009/09/06(日) 14:51:37
>>207-208
うごかねーよ
0214デフォルトの名無しさん2009/09/06(日) 15:43:59
あ、ホントだ。。
0215デフォルトの名無しさん2009/09/10(木) 00:55:29
○○.bat 16:00 テレビの時間

ってコマンドライン上から入力するとタスクに登録され
16:00 に「テレビの時間」ってかかれたテキストが表示される。

こういうのってどうやればできますか?
0216デフォルトの名無しさん2009/09/10(木) 01:14:17
atとVBSのMsgBoxを使えば出来そうだけど
vectorあたりでスケジューラ探してきた方が早くね?
0217デフォルトの名無しさん2009/09/10(木) 09:58:28
@ECHO OFF
TITLE オリジナルメッセージ表示Test.
ECHO ┏≪お知らせ≫━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO ┃1234567890123456789012345678901234567┃
ECHO ┃ 1 2 3 *┃
ECHO ┃12345678901234567890123456789012345678901234567890123456789012345678901234┃
ECHO ┃ 1 2 3 4 5 6 7 *┃
ECHO ┃5行目
ECHO ┃6行目
ECHO ┃7行目
ECHO ┃8行目
ECHO ┃9行目
ECHO ┃10行目
ECHO ┃11行目
ECHO ┃12行目
ECHO ┃13行目
ECHO ┃14行目
ECHO ┃15行目  テレビの時間
ECHO ┃16行目
ECHO ┃17行目
ECHO ┃18行目
ECHO ┃19行目
ECHO ┃20行目
ECHO ┃21行目 ┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
ECHO 何かキーを押してください。
PAUSE > NUL
0218デフォルトの名無しさん2009/09/10(木) 12:37:02
nul はDOS窓
null がコマンドプロンプト
02191192009/09/10(木) 16:14:29
>>218
(゚Д゚)ハァ?
0220デフォルトの名無しさん2009/09/10(木) 21:06:16
notepad.exe テレビの時間.txt
0221デフォルトの名無しさん2009/09/10(木) 22:25:47
>>215

@echo off
at.exe %1 /interactive mshta.exe "about:<h1>%*</h1>"
0222デフォルトの名無しさん2009/09/11(金) 01:30:58
>>221
mshta.exe "about:<h1>***</h1>"
これはおもろいな
0223デフォルトの名無しさん2009/09/11(金) 13:33:48
@echo off
at.exe %1 /interactive msg.exe * %2
0224デフォルトの名無しさん2009/09/11(金) 15:23:27
msgってうちのVistaには無いんだよな
0225デフォルトの名無しさん2009/09/11(金) 16:45:28
@ECHO OFF
TITLE オリジナルメッセージ表示Test.
ECHO ┏≪お知らせ≫━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO ┃1234567890123456789012345678901234567┃
ECHO ┃ 1 2 3 *┃
ECHO ┃12345678901234567890123456789012345678901234567890123456789012345678901234┃
ECHO ┃ 1 2 3 4 5 6 7 *┃
ECHO ┃5行目
ECHO ┃6行目
ECHO ┃7行目
ECHO ┃8行目
ECHO ┃9行目
ECHO ┃10行目
ECHO ┃11行目
ECHO ┃12行目
ECHO ┃13行目
ECHO ┃14行目
ECHO ┃15行目  おやつの時間
ECHO ┃16行目
ECHO ┃17行目
ECHO ┃18行目
ECHO ┃19行目
ECHO ┃20行目
ECHO ┃21行目 ┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
ECHO 何かキーを押してください。
PAUSE > NUL
0226デフォルトの名無しさん2009/09/11(金) 16:52:52
Outlook+cron最強
0227デフォルトの名無しさん2009/09/12(土) 03:41:31
REM メッセージボックス テスト用.vbsファイル
Option Explicit
Dim k
k = MsgBox("( 現在の日時 " & Now & " )" & vbCrLf & vbCrLf & "まだ午前3:40すぎですが、起きますか?", 289, "メッセージテスト")
WScript.Quit(k)
0228デフォルトの名無しさん2009/09/12(土) 13:14:15
WSHスレでもないのにVBS…だと?
0229デフォルトの名無しさん2009/09/12(土) 13:22:36
バッチファイルで%1のアクセス日時を取得したいのですがどうすればいいのでしょうか?
0230デフォルトの名無しさん2009/09/12(土) 13:34:42
dir/?
0231デフォルトの名無しさん2009/09/12(土) 13:41:40
勘違いしていました、dirを見直し作成すると出来ました!
0232デフォルトの名無しさん2009/09/12(土) 14:02:17
>>227
そこは vbCrLf でなく vbLf を使え
vbCrLf だと cr+cr+lf になるぞ
0233デフォルトの名無しさん2009/09/12(土) 14:17:01
>>228
REM:[email protected] //E:VBS //NoLogo "%~f0" %* & GOTO :EOF
にすればよかろう
0234デフォルトの名無しさん2009/09/12(土) 14:51:25
@ECHO OFF
TITLE オリジナルメッセージ表示Test.
ECHO ┏≪お知らせ≫━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO ┃1234567890123456789012345678901234567┃
ECHO ┃ 1 2 3 *┃
ECHO ┃12345678901234567890123456789012345678901234567890123456789012345678901234┃
ECHO ┃ 1 2 3 4 5 6 7 *┃
ECHO ┃5行目
ECHO ┃6行目
ECHO ┃7行目
ECHO ┃8行目
ECHO ┃9行目
ECHO ┃10行目
ECHO ┃11行目
ECHO ┃12行目
ECHO ┃13行目  Outlook+cron最強
ECHO ┃14行目
ECHO ┃15行目  Outlook+cron最強
ECHO ┃16行目
ECHO ┃17行目  Outlook+cron最強
ECHO ┃18行目
ECHO ┃19行目
ECHO ┃20行目
ECHO ┃21行目 ┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
ECHO 何かキーを押してください。
PAUSE > NUL
0235デフォルトの名無しさん2009/09/12(土) 15:56:13
mshta.exe "about:<marquee>テレビの時間</marquee>"
0236デフォルトの名無しさん2009/09/12(土) 19:12:36
>>232
はにゃ?
0237デフォルトの名無しさん2009/09/12(土) 19:20:24
>>236
はにゃ?知らんと?
CTRL+Cしてメモ帳に貼り付けて保存a.txt
バイナリで改行コードを調べてみ
そうか
for /f %a in (a.txt) do echo [%a]
でもわかるが
0238デフォルトの名無しさん2009/09/12(土) 19:34:01
mshta.exe vbscript:close(Msgbox("テレビの時間"))
0239デフォルトの名無しさん2009/09/12(土) 20:22:26
mshta.exe javascript:alert("テレビの時間");close()
0240デフォルトの名無しさん2009/09/12(土) 21:06:26
mshta.exe javascript:"テレビの時間"
0241デフォルトの名無しさん2009/09/12(土) 22:19:07
@<nul rem='
@at.exe %1 /interactive mshta.exe "file://%~f0?%*"
@exit /b
'>
<script>resizeTo(320, 240);var arg=location.search.substr(1).split(/ /g);
document.title=arg[0];</script>
<hta:application innerborder="no" scroll="no" selection="no" />
<style>body{background-color:#00f;color:#00f;
font-family:'HG PGothicE';text-align:center;font-size:0px;}
div{position:relative;color:#fff;font-size:24pt;}</style>
<body onload="text.style.top=(108-20*arg.length)+'px';">
<div id="text"><script>document.write(arg.slice(1).join('<br>'));</script>
0242デフォルトの名無しさん2009/09/13(日) 04:20:02
メッセンジャーサービスが動いている前提なら、net send %computername%で自分自身にメッセージ送るのがお手軽じゃけん。
0243デフォルトの名無しさん2009/09/14(月) 23:44:49
forでdelims=に羅列した文字を区切り文字にしますが、
eol=に羅列して複数文字を無視判定文字にすることはできないのですか?
0244デフォルトの名無しさん2009/09/15(火) 01:08:00
for /f "eol=b" %y in ('for /f "eol=a" %x in ( ) do echo %x') do echo %y
0245デフォルトの名無しさん2009/09/15(火) 14:43:45
delimS Sがあるだろ?
eolS? Sがないだろ?
0246デフォルトの名無しさん2009/09/15(火) 23:53:36
はい
0247デフォルトの名無しさん2009/09/19(土) 00:49:53
forで"delims="で区切り文字をなしにしますが、
"eol="で無視判定文字をなしにすることはできないのですか?
0248デフォルトの名無しさん2009/09/20(日) 21:46:12
はい
0249デフォルトの名無しさん2009/09/23(水) 21:47:14
>>241 がうまく動かない。青い小さなウィンドウが開くだけ
0250デフォルトの名無しさん2009/09/23(水) 22:19:23
>>249
>>215のように
○○.bat 16:00 テレビの時間
のように起動してる?
0251デフォルトの名無しさん2009/09/23(水) 22:41:54
?
0252デフォルトの名無しさん2009/09/24(木) 00:04:16
サーバにあるファイルを、こちらにあるファイルと取り替えたいのですが、
どうすれば可能でしょうか。一応、作ってみましたが、うまく動作してくれません。
サーバ格納先などのパスがわからないので、とりあえず自分のパソコン内で移動させようとしてます


CD C:\severkakunou

SK01.bmp

CD C:\hozonsaki

set /p INP="1:通常用、2:緊急用"

if INP == 1

del /p C:\severkakunou>SK01.bmp

C:\hozonsaki>copy SK01_00.bmp C:\severkakunou

else if INP == 2

del /p C:\severkakunou>SK01.bmp

C:\hozonsaki>copy SK02_01.bmp C:\severkakunou

else echo 入力できるのは「1」か「2」のみです
■ このスレッドは過去ログ倉庫に格納されています