10/03/27 00:43:39
if exist "dir name\*" は?
752:デフォルトの名無しさん
10/03/27 01:51:37
オラも考えてみた。
if exist "%~1" (
dir /a:d "%~1" 1>nul 2>&1
if errorlevel 2 goto nazo
if errorlevel 1 goto fileeee
if errorlevel 0 goto dirrrrr
) else (
echo "%~1" が無いよ?
goto naiyo
)
優雅さに欠けるし、= でダメだ... orz
ふと思ったのは %1 を渡された時にたとえば aaa と aaa========== を見分けるにはどーすりゃいいんだ?
753:デフォルトの名無しさん
10/03/27 02:11:47
pushd %1&&popd
echo %errorlevel%
754:デフォルトの名無しさん
10/03/27 07:01:38
>>752
>ふと思ったのは %1 を渡された時にたとえば aaa と aaa========== を見分けるにはどーすりゃいいんだ?
ヒント:findstr /x
755:デフォルトの名無しさん
10/03/27 09:22:25
>>754
findstr をしようにも、たとえば
echo %1
というバッチファイル test.bat で
test.bat aaa と test.bat aaa===== でどちらも aaa となって末尾の = が拾えない
のを「見分けるにはどーすりゃいいんだ?」と思ったんですが。
オレ何か勘違いしてる?
756:デフォルトの名無しさん
10/03/27 14:29:01
>>751
あまいな .もない、空のフォルダってぇのがあるのだ
>>752 >>753
アクセス権がないフォルダはファイルなのか
>>755
別の話を絡めるな
test.bat "aaa====="
757:デフォルトの名無しさん
10/03/27 14:35:30
厳密にやりたきゃ別の言語使えよ。もう質問してる奴もいないし秋田。
758:デフォルトの名無しさん
10/03/27 15:56:47
別の言語使いたけりゃ他スレへ行けよ
759:デフォルトの名無しさん
10/03/27 17:34:27
厳密にやりたきゃ%~a1を使えばよいだけの話
760:デフォルトの名無しさん
10/03/28 17:31:02
あるソフトウェアのバージョン違いが3つほど入ってるんだけど
デスクトップに同じ見た目のアイコンが3つあるからややこしくて。
バッチファイルをクリックすると上下ボタンでどのソフトを起動するか
選択できて、エンター押すと実行っていうのを作りたいんだけど
誰か作ってくんない?
イメージ的にはウィンドウズをセーフモードで起動したときに
選択する画面がまずでてくるんだけどあんな感じ☆
761:デフォルトの名無しさん
10/03/28 17:56:46
アイコン変えればいいじゃん
762:デフォルトの名無しさん
10/03/28 18:03:24
デスクトップに3つあるアイコンそれぞれに
異なるショートカットキーを指定すればいいじゃん
763:760
10/03/28 18:25:55
こんな感じのを作ってみたんだけど
やっぱり上下のキーで選択するUIがいいなぁと思うので
誰か改造求む!
@echo off
echo アプリケーションを選択して下さい
echo [1] : メモ帳
echo [2] : ペイント
echo [3] : 電卓
set /p INPUT=
if "%INPUT%"=="1" start notepad
if "%INPUT%"=="2" start mspaint
if "%INPUT%"=="3" start calc
764:デフォルトの名無しさん
10/03/28 19:38:46
Enterなしにキー入力を受け取る方法がないから無理
765:デフォルトの名無しさん
10/03/28 19:47:41
指定したファイルをホームページ(FTPで)にバッチファイルで送信することは可能でしょうか?
766:デフォルトの名無しさん
10/03/28 19:59:09
@echo off
echo アプリケーションを選択して下さい
echo [1] : メモ帳
echo [2] : ペイント
echo [3] : 電卓
choice /c 123
if "%ERRORLEVEL%"=="1" start notepad
if "%ERRORLEVEL%"=="2" start mspaint
if "%ERRORLEVEL%"=="3" start calc
767:デフォルトの名無しさん
10/03/28 20:17:58
if 1==2 (
start notepad
start mspaint
start calc
)
↑
768:デフォルトの名無しさん
10/03/28 21:11:49
大昔はそういうメニューが普通にあったが、GUIで死滅したな
あってもブート選択画面ぐらいか
769:デフォルトの名無しさん
10/03/28 21:15:15
1文字読み取って制御を返すツール作ればいろいろ用途が広がるよ。
2ストロークで26^2個のツール呼び出せるランチャ作ったけど軽くて便利。
770:デフォルトの名無しさん
10/03/28 22:05:34
powershell使えばカーソル選択メニューが作れるよ
771:デフォルトの名無しさん
10/03/28 22:32:52
>>765
できるよ
バッチファイルとまた一つftpコマンドを書いたテキストファイルが必要になる
772:デフォルトの名無しさん
10/03/29 13:10:44
>>771
遅レスすみません。
ありがとうございます。おかげでできました。
773:デフォルトの名無しさん
10/03/29 21:37:47
コマンドプロンプトに表示された文字を(txt等)に出力ってできますか?
774:デフォルトの名無しさん
10/03/29 21:42:46
無理
775:773
10/03/29 22:54:06
すみません、自己解決しました。
test.bat > log.txt
776:デフォルトの名無しさん
10/03/29 23:40:05
>>775
それだと標準エラーがファイル出力できないよ
777:デフォルトの名無しさん
10/03/29 23:48:00
test.bat > log.txt 2<&1
778:デフォルトの名無しさん
10/03/29 23:59:44
>>776-777
そうなんですか、知りませんでした!
ありがとうございます。
779:デフォルトの名無しさん
10/03/30 11:24:07
質問です。
ファイル
a.txt.bak
ab.html.bal
abc.exe.bak
があるとすると
拡張子.bakだけ一括で名前変更できるでしょうか?
780:デフォルトの名無しさん
10/03/30 13:17:31
できないわけがない
781:デフォルトの名無しさん
10/03/30 13:35:10
ren *.bak *.hoge
782:デフォルトの名無しさん
10/03/30 13:51:39
それじゃ
a.txt.baka
ab.html.aho
abc.exe.baka
拡張子.bakaだけ一括で名前変更できるでしょうか?
783:779
10/03/30 14:02:57
すみません、質問の仕方が間違えていました。
bakの部分だけ消したいんです。
a.txt.bak→a.txt
784:デフォルトの名無しさん
10/03/30 14:17:18
ren *.bak *.
785:デフォルトの名無しさん
10/03/30 15:07:17
>>784
ありがとうございます
できました
786:デフォルトの名無しさん
10/03/30 16:00:55
hogeよりはahoやbakaの方が好き
おっと、kusoも使うなw
787:デフォルトの名無しさん
10/03/30 17:21:12
chinko
manko
unko
shikko
788:デフォルトの名無しさん
10/04/06 00:27:29
すみません。テキストファイルの中身の特定行だけ抜き出す方法を教えてください。
test.txt中身
---------------
morning
hello
bye
---------------
上のようなファイルがあったとして、1行目のmorningや、3行目のbyeを
変数やファイルに出力する方法はないでしょうか。
外部コマンドは使えないWindowsXP/2003環境です。
789:デフォルトの名無しさん
10/04/06 02:28:58
for /?
790:デフォルトの名無しさん
10/04/06 02:28:59
>>788
find使って >baka.txtとかで出力
うまく使えば一つのバッチファイルで色んなバッチファイルを作成することができるから便利
791:デフォルトの名無しさん
10/04/06 07:40:04
findは外部コマンド
792:デフォルトの名無しさん
10/04/06 07:56:00
>>788
findstr /r "^morning$ ^bye$" > hoge.txt
793:デフォルトの名無しさん
10/04/06 09:11:31
>>791
空気読め馬鹿
794:デフォルトの名無しさん
10/04/06 09:28:43
料理できないと買ってきた惣菜をならべるぐらいのことでも自慢するんだよ
それ外で買ってきたんだろとあきれられてても本人は満足
795:デフォルトの名無しさん
10/04/06 20:43:40
バッチファイルでテトリス作って
796:デフォルトの名無しさん
10/04/06 22:12:33
>>792
ありがとうございます。
説明が不足してたのですが、必ずしも1行目にmorningがあって、3行目にbyeがあるわけじゃない場合に
1行目、3行目を抽出って出来るんでしょうか。根本から違うやり方考えた方が良いですかね・・・。
797:792
10/04/06 22:28:25
findstrコマンドは/cオプションを指定しない場合は、
二重引用符内で半角空白区切りで指定されたキーワードを
OR検索できるんだけど、
やりたいのは、特定キーワードで抽出したいんじゃなくて、
特定の行番号を抜き出したいってこと?
798:デフォルトの名無しさん
10/04/06 23:05:41
下のようなのを作る場合変数iの引数は12個まで
とかいう決まりがあるのでしょうか?
for %%i in (%*) do xxxxx %%i
pause
このバッチファイルに引数となるファイルをドラッグ&ドロップしたら
「指定されたデバイス、パス、またはファイルにアクセスできません。
アクセス許可がない可能性があります。」
と言われます。ちなみに12個まではOKでした。
799:デフォルトの名無しさん
10/04/06 23:18:13
>>798
D&Dした複数ファイルのフルパス文字列の長さが限界に達したのでは?
その12ファイルをもっと浅い(フルパスの短い)階層に移動させれば、
13ファイル以上もいけるかと。
Win9x系かNT系かでも変わってくると思う。
800:799
10/04/06 23:21:16
ごめん。NT系でもNT4.0や2000とXP以降で違うみたい。
URLリンク(support.microsoft.com)
801:デフォルトの名無しさん
10/04/06 23:25:24
>>799,800
たぶん、ファイルの長さだと思います。
ありがとうございました。
802:デフォルトの名無しさん
10/04/06 23:34:51
たぶん?
結局どうでもよかったのか
803:792
10/04/06 23:55:34
>>796
find /n /v "" test.txt|findstr /b /l "[1] [3]"
または
type test.txt|find /n /v ""|findstr /b /l "[1] [3]"
または
type test.txt|findstr /n /v ""|findstr /r "^1: ^3:"
Mac環境から書き込んでてテストしてないから間違ってるかも。
特に3つ目の「findstr /n /v ""」は入力ファイルの全行に行番号出力になってないかも。
804:デフォルトの名無しさん
10/04/08 23:02:04
>>801
>たぶん、ファイルの長さだと思います。
ファイルサイズは関係ないだろ
805:デフォルトの名無しさん
10/04/08 23:09:06
<test.txt (
set /p x=
call echo %%x%% >1.txt
set /p x=
call echo %%x%% >2.txt
set /p x=
call echo %%x%% >3.txt
)
806:spectre
10/04/11 18:40:33
アクティブな画面を「最新の情報に更新」にするバッチってありますかぁ?
どなたかよろしくお願いします。
807:デフォルトの名無しさん
10/04/11 19:47:26
バッチでは不向きな気が…
簡単なものでよければ VBScript 辺りでどう?
' ## update.vbs ##
Dim objWshShell ' WshShell オブジェクト
Set objWshShell = WScript.CreateObject("WScript.Shell")
If Err.Number = 0 Then
objWshShell.SendKeys "{F5}" ' F5 を送信
Else
WScript.Echo "エラー: " & Err.Description
End If
Set objWshShell = Nothing
808:デフォルトの名無しさん
10/04/11 19:53:59
しかしどうやって動かすんだ?
動いたときアクティブなウィンドウは?
809:デフォルトの名無しさん
10/04/11 20:05:00
想定の範囲外です(キリッ
適当なフリーソフト使え
810:デフォルトの名無しさん
10/04/12 19:17:26
ローカルでphpスクリプトを動かす際に一連の流れを
バッチファイルでまとめてしまおうと思ったのですが
cd "ディレクトリ1"
httpd.exe
cd "ディレクトリ2"
C:\php\php.exe batchtest.php
このようなバッチファイルを作ったところ
httpd.exeを起動したところで止まってしまい、httpd.exeを終了させないと
次の行に行きませんでした。
どのようにすればすべての処理が行われるでしょうか?
811:デフォルトの名無しさん
10/04/12 19:36:02
cd "ディレクトリ1"
httpd.exe
taskkill /im httpd.exe
cd "ディレクトリ2"
C:\php\php.exe batchtest.php
812:デフォルトの名無しさん
10/04/12 20:56:35
start httpd.exe
813:デフォルトの名無しさん
10/04/13 07:38:21
>>811
ヒネリがないので笑えん。
814:デフォルトの名無しさん
10/04/13 12:59:02
>>813
素直な奴だな。
httpd.exeを終了させないとtaskkillが実行されないという二段オチなのに。
815:デフォルトの名無しさん
10/04/13 14:49:58
下記のバッチ内、:mpexec_core にある if 文で落ちてしまいます。
書き方に何か問題があるのでしょうか?
URLリンク(ideone.com)
816:デフォルトの名無しさん
10/04/13 15:10:11
その行だけじゃわからないよ
環境変数に適切な値が入っているならちゃんと動くように見える
echoの表示やエラーメッセージはどうなってんの?
エスパー初級な解答
if "%xxx%" geq "%yyy%"のように""で括れば
環境変数が空の場合でも落ちる事はなくなるはず
817:815
10/04/13 15:25:07
>816
if "%MP_MAX%" geq "%MP_NUM%" (
に変更しても落ちました。
直前の出力は
if 1 geq 1 (
なので、両方に1が入っていることは確認済みなのですが・・・。
エラーは 「コマンドの構文が誤っています。」 です。
818:デフォルトの名無しさん
10/04/13 18:43:38
エラーの詳細が出るようにバッチの先頭におまじないを書いておく
echo W 100 2 0 200 | debug
819:デフォルトの名無しさん
10/04/13 18:47:20
>>817
()のなかの命令が不適切なのでは?
820:デフォルトの名無しさん
10/04/13 19:54:16
( ) の中で SET を使うのはやめといた方がいいよ
GOTO 文などに置き換えれば動くはず
821:815
10/04/13 20:06:10
>>819,820
()の中を関数化したら正常に動作しました。
ありがとうございました。
822:デフォルトの名無しさん
10/04/13 20:43:32
すべてのウィンドウを「最新の情報に更新」にするバッチってありますかぁ?
823:デフォルトの名無しさん
10/04/13 22:48:22
ないよ
824:デフォルトの名無しさん
10/04/14 02:26:10
ありがとうございました。
825:デフォルトの名無しさん
10/04/14 17:07:20
作成日時は%~t1で取れますかぁ?
826:デフォルトの名無しさん
10/04/14 17:14:10
ヘルプ見るの面倒
827:デフォルトの名無しさん
10/04/16 09:14:28
>>825
こういうこと?
for /? より
%~tI - %I ファイルの日付/時刻に展開します。
828:デフォルトの名無しさん
10/04/16 14:10:17
それ更新日時
829:デフォルトの名無しさん
10/04/16 18:25:03
>>828
827じゃないが、ファイルの日付が何になるかって、
環境変数で変更できなかったっけ?
まぁ、できなくても、作成日時だったら、
他の手段で、何とでもなるから困らないけどね
830:デフォルトの名無しさん
10/04/16 20:08:20
それDIRCMD
831:デフォルトの名無しさん
10/04/17 06:44:59
>>814
だから、それは一目見て分かることで何の面白味もないの。
832:デフォルトの名無しさん
10/04/17 07:35:16
>>810
httpdが無いと動かないようなphpなら
netstatとか使って、httpdが起動完了したことを検知しないと駄目な気がする
まぁ、batchtest.php内で成功するまで待つって手もあるけど…
あと、最後にhttpdを止める必要はないの?
動かしっぱなしなら、httpdをバッチで起動する意味はないと思うけど?
833:デフォルトの名無しさん
10/04/20 18:16:02
馬鹿じゃないんだからそんなこといちいち聞かれなくても分かってますよ。
834:デフォルトの名無しさん
10/04/23 20:48:27
バッチでキューを実装したいけど実装できますよね?
現状想定案
■I/F
QUE.bat -que|-deq -prm1
prm1=パラメタファイル
格納DIR 、入力元DIR、出力先DIR、ファイル名
■que指定時
1.入力ファイル名と同名のファイルが格納先にないかチェック
↓ ↓ない
↓ 末尾0付格納
3.カウンタをインクリし2に戻る
■deq指定
1.格納先ディレクトリに末尾0ファイルがあるかチェック
↓ ↓ない
↓ エラー返却
↓
↓ある
2.ファイルを出力先に出力
↓
3.カウンタで小さい方からサーチ
カウンタ-1でリネーム
835:デフォルトの名無しさん
10/04/23 23:48:57
実装自体はいけそう
que指定時の2の処理が不明だったり
格納ファイルのフォーマット(ファイル名の規則)をどう定義するか
カウンタの初期値をどこから設定するかなど細部が気になる
836:デフォルトの名無しさん
10/04/24 00:35:27
>>835
携帯から書いたら改行多すぎと言われて、消しすぎたぜ…
■大体決めたこと
1.格納先のファイル名は入力ファイル名+連番。
1~が数えやすそうかな。
2.返却値はキューの残数。
取出失敗時はマイナス
■迷ってること
1.格納先DIRパスとファイルの種類は1対1で対応させるかどうか?
2.キュー残数チェック用のオプションを実装するか?
3.もっと汎用的な設計がないか?
(サンプル的なやつ)
4.バッチ暦10日だけどそもそも言語仕様的に無理とかないよね?
できそうと聞いて安心したよ。
迷4以外はただの設計とアルゴリズムだし。
技術的に困ったらまたお願いします。