[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 02/03 08:07 / Filesize : 127 KB / Number-of Response : 622
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2012/04/21(土) 22:37:58.49 ]
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %8 【.bat】
toro.2ch.net/test/read.cgi/tech/1315844420/

【.cmd】 バッチファイルスクリプト %7 【.bat】
hibari.2ch.net/test/read.cgi/tech/1298873550/
【.cmd】 バッチファイルスクリプト %6 【.bat】
hibari.2ch.net/test/read.cgi/tech/1277465356/
【.cmd】 バッチファイルスクリプト %5 【.bat】
pc12.2ch.net/test/read.cgi/tech/1242268171/
【.cmd】 バッチファイルスクリプト %4 【.bat】
pc12.2ch.net/test/read.cgi/tech/1229955189/
【.cmd】 バッチファイルスクリプト %3 【.bat】
pc11.2ch.net/test/read.cgi/tech/1217860043/
【.cmd】 バッチファイルスクリプト %2 【.bat】
pc12.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
pc11.2ch.net/test/read.cgi/tech/1178281991/

29 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 19:18:08.15 ]
for %i in (*) do @echo\a
とかでもおかしい表示になってたのにデバッガ開いたら正常になった
原因はfor臭い

30 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 19:23:35.98 ]
>>22
XPでよくコマンドプロンプト表示がバグることがあるけど、
あれのMS公式見解ってないのかね?
エンドユーザにPCの情報採取してもらうのに
dir/a|findstr ほにゃらら
とかやらせて、DOS窓のスクショを送ってもらうんだけど
前にコンソール表示のバグらしき事象に騙されたことがあったんだけど、
リダイレクトで万が一既存ファイルを上書いてしまうリスクを考えると、
エンドユーザにリダイレクトはさせたくないんですよね

31 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 19:26:59.27 ]
| clip
ならよかんべ

32 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 19:31:38.85 ]
>>28
ピリオドはやめとけ
echo > echo.txt
for %i in (txt) do @echo.%i


33 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 19:34:57.69 ]
>>28
\もやめとけ
md echo
echo >echo\aaa.txt
for %i in (aaa.txt) do @echo\%i

34 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 20:08:24.03 ]
echoで改行だけを出力する時困り申す

35 名前:デフォルトの名無しさん mailto:sage [2012/05/03(木) 20:14:10.01 ]
scripting.cocolog-nifty.com/blog/2008/11/echo-3741.html

36 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 00:00:21.17 ]
>>18は無理なのかな。

37 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 01:15:10.65 ]
CMDCMDLINE



38 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 01:50:32.71 ]
無理無駄無用

39 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 22:12:33.58 ]
%*

40 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 11:26:56.87 ]
プログラムを実行したときにプログラム内の処理でキー入力させられるものがありますが
それらをbatファイルから入力させることは可能でしょうか?

41 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 12:42:34.47 ]
>>40
SET /? をよく読むんだ

42 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 14:51:14.05 ]
setって変数を宣言するものですよね?
コマンドプロンプトで動作するプログラム(mysqlとかsqlite3)を実行中に標準入力を受け付けてるところに指定した文字列を入力したいだけなんですが

set pass=1234
mysql -u root -p
REM パスワード入力
REM ここでパスワード入力待ちになる
REM ここで変数passを入力したい

43 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 15:05:15.12 ]
ああ、そっちか
標準入力のリダイレクトでダメなら、バッチファイルだけでは辛いかも

44 名前:デフォルトの名無しさん mailto:sage [2012/05/26(土) 18:16:39.01 ]
お前には無理

45 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 07:50:43.58 ]
>>42
set pass=1234
echo pass|mysql -u root -p
ではどうですか?

46 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 10:48:16.26 ]
>>45
試してみたのですが入力されませんでした

47 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 11:32:20.43 ]
>>46
バッチファイルにパスワードを晒すぐらいなら、普通に
mysql -u root --password=1234
でやれよw



48 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 12:18:47.20 ]
パスワードだけでなくその後にsqlも実行したいのです・・・


49 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 12:34:45.05 ]
それならこれでいいだろ
mysql -u root -pパスワード データベース名 < hoge.sql

50 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 13:45:14.71 ]
そうなると標準入力へはできないってことですか?

51 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 15:15:53.18 ]
そこまで意欲的に質問する暇があったらググれ


52 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 15:44:07.22 ]
どうもググってもbatファイルできるような記事が見当たらず・・・
別の所で聞いてきます

53 名前:デフォルトの名無しさん mailto:sage [2012/05/27(日) 15:48:56.09 ]
翻訳:ググるよ面倒なので他人を利用するぞ

54 名前:45 mailto:sage [2012/05/27(日) 16:10:13.24 ]
>>46
ごめん環境変数は参照時は%で括るんだったorz
set pass=1234
echo %pass%|mysql -u root -p

55 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 15:47:33.84 ]
autohotkeyとか使っとけよ
セキュリティgdgdになるけど

56 名前:デフォルトの名無しさん mailto:sage [2012/05/28(月) 18:24:18.67 ]
おまえらど素人をあんまり甚振るなよ
>>41が答えだろ
set /p pass=enter password
mysql -u root --password=%pass%


57 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 00:38:44.56 ]
>>41-43の流れだと対話的に入力させたいわけではなく、対話型プログラムを自動化したいって意味だと思うが?
まあ>>40が不明瞭だしその後のレスも結局何がしたいのか説明できていないが



58 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 01:50:20.43 ]
>>54
set /?
を,見ればすぐ分かることを仕込んでどんな相手なのか判断してたのかと
思って読んでたよw

59 名前:デフォルトの名無しさん mailto:sage [2012/05/29(火) 02:18:43.40 ]
どうみても釣だろ

60 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 18:47:03.35 ]
ある時刻になったら stop ってコマンドを自動で入力させることってできる?

61 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 21:07:40.69 ]
質問になってませんね

62 名前:デフォルトの名無しさん mailto:sage [2012/06/13(水) 22:10:33.28 ]
at

63 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 02:28:07.82 ]
質問です。
大量にデータがあるファイル内の[開始文字列]と[終了文字列範囲内]の文字を抽出するにはどうしたらいいのでしょうか。

分かりやすく例えますと、htmlファイル内の
検索範囲開始文字列:http
から
検索範囲終了文字列:.html
までをファイルに追記書き出しすると言うほうが分かりやすいでしょうか。

通常のhtmlファイル内には複数のURLがあるので、
私が指定している方法ですと、htmlファイル内のURLが
指定ファイルに列挙される形になります。

結果のファイルサンプルです。
----------result.txt----------
hogehoge.com/index.html
hogehoge.com/hello_world.html
hogehoge.com/hogehoge.html
hogehoge.co.jp/index.html
hogehoge.co.jp/programming.html
hogehoge.co.jp/debughtml
------------------------------

外部コマンドラインツールを利用してもOKです。

64 名前:デフォルトの名無しさん mailto:sage [2012/06/21(木) 02:31:11.43 ]
そして、>>42ですが、
set pass=1234
mysql -u root -p
mysqlが パスワード入力 ルーチンロード
mysqlがユーザからのパスワード入力を待機
ここでmysqlに%pass%のデータを送信させる。(ようするにパイプ)

じゃないかなって思います。

65 名前:デフォルトの名無しさん mailto:sage [2012/06/22(金) 22:15:57.46 ]
>>63
for/?
set/?
if/?
echo/?

66 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 01:04:24.75 ]
>>65
Split.CMD
というバッチファイルをダウンロードしてきて
やってみたのですが、指定された文字を含む行が表示されるだけで
開始文字列から終了文字列まで、などの指定で一部分を切り出す事ができませんでした。。

67 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 06:13:58.31 ]
そのやる気のなさと知識レベルだと、教えてもらってもだめだろうから、
素直にあきらめるがよろし。



68 名前:デフォルトの名無しさん mailto:sage [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


69 名前:デフォルトの名無しさん mailto:sage [2012/06/23(土) 23:25:47.79 ]
レスありがとうございます。

C:\TEST>切り出し-2chTEST.CMD 234 789 test.txt
1234567890

C:\TEST>

testファイルの中身です。
-----test.txt-----
HelloWorld
サンプルです
1234567890
Sample
[EOF]
---------------------------

どうも23456789と切り出ししてくれなくて困ってます。

70 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 00:06:38.11 ]
用途が違うな

71 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 00:12:02.93 ]
for
find
set
echo
で作れ


72 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 07:56:08.12 ]
>>69
どっちにしろ、! を含むファイルでおかしくなるとかあるから、素直にあきらめて
vbs とかでやれよ。

73 名前:デフォルトの名無しさん mailto:sage [2012/06/24(日) 19:08:22.13 ]
console2が結構まともに動くと思ったけどヒストリなしか。
なかなかこれといったcmd, powershellがまともに動くマルチタブのターミナルが出てこないな。

74 名前:デフォルトの名無しさん mailto:sage [2012/06/26(火) 18:12:31.62 ]
>>72
はい。そうしてみます。
ありがとうございました。

75 名前:デフォルトの名無しさん mailto:sage [2012/06/30(土) 15:34:24.45 ]
指定したディレクトリ以下にあるファイル名にスペースがあったらすべてアンダーバーに置き換える
バッチお願いします


76 名前:デフォルトの名無しさん mailto:sage [2012/06/30(土) 15:50:19.40 ]
> 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
> 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

丸投げするスレじゃないぞ。

あと、個人的には...

> ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。

の方がいいと思う、バッチで文字列操作は結構トラップ多いから。

77 名前:デフォルトの名無しさん mailto:sage [2012/06/30(土) 15:51:32.15 ]
pushd %1 && for %%I in ("* *") do (
set xxx="%%~I"
call ren "%%~I" %%xxx: =_%%
)



78 名前:デフォルトの名無しさん mailto:sage [2012/06/30(土) 16:47:01.97 ]
>>77
ありがとうございます
これをサブフォルダ内まで効果を及ばせるのって可能でしょうか

79 名前:デフォルトの名無しさん mailto:sage [2012/06/30(土) 21:10:04.77 ]
pushd %1 && for /r %%I in ("* *") do (
set xxx="%%~nxI"
call ren "%%~I" %%xxx: =_%%
)


80 名前:デフォルトの名無しさん mailto:sage [2012/06/30(土) 22:14:41.84 ]
/rを追加でできるんですね、覚えておきます
ありがとうございました

81 名前:デフォルトの名無しさん mailto:sage [2012/07/05(木) 03:05:34.99 ]
質問なんですがちょっと長いです、申し訳ないです

C:\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

82 名前:デフォルトの名無しさん mailto:sage [2012/07/05(木) 03:17:23.65 ]
robocopy

83 名前:デフォルトの名無しさん mailto:sage [2012/07/05(木) 03:36:21.24 ]
xcopy /d
setlocal

84 名前:デフォルトの名無しさん mailto:sage [2012/07/05(木) 14:20:02.17 ]
>>82
>>83
robocopyなんて便利なものがあったとは・・・目から鱗です
本当にありがとうございましたm(_ _)m

85 名前:初心者さん [2012/07/05(木) 18:27:23.50 ]
@echo off
: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

86 名前:デフォルトの名無しさん [2012/07/10(火) 20:04:55.55 ]
調べ方がわからないのでここにたどり着きました

フォルダ内にあるファイルをアクロバットリーダーを使って印刷するバッチです
印刷は出来るのですがpdf以外のファイルがあるとエラーが出て
それが大量なのでいまいち使いづらいです
pdfのみに絞るもしくは、他のファイルは無視をする方法教えてくれませんか

〜〜〜〜〜〜〜〜〜〜〜〜
for %%i in (*) do (
START ACRORD32.EXE /n /t %%i
)
〜〜〜〜〜〜〜〜〜〜〜〜

87 名前:デフォルトの名無しさん mailto:sage [2012/07/10(火) 20:19:02.99 ]
for %%i in (*.pdf) do (
START ACRORD32.EXE /n /t %%i
)



88 名前:デフォルトの名無しさん [2012/07/10(火) 22:05:30.31 ]
>>87 ありがとうございます;;

89 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 13:04:36.13 ]
自分自身がUACの管理者承認モードで
動いてることを検出できるバッチファイルの作り方おしえれ

90 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 15:04:20.91 ]
title /?

91 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 17:34:05.47 ]
バッチファイルで、「管理者として実行」されているか?「整合性レベル:低」か?を判定する。(その2)

92 名前:デフォルトの名無しさん mailto:sage [2012/07/14(土) 17:41:16.31 ]
titleに付けないようにできるからな

93 名前:デフォルトの名無しさん mailto:sage [2012/07/18(水) 16:59:27.47 ]
異なる拡張子のファイルを複数バッチに投げたときに
拡張子ごとのファイルパスをsetする方法を教えてください

94 名前:デフォルトの名無しさん mailto:sage [2012/07/18(水) 21:32:19.99 ]
for %%I in (%*) do echo %%~xI
あとは自分で考えろバカ

95 名前:デフォルトの名無しさん mailto:sage [2012/07/19(木) 21:44:23.72 ]
>>94
ありがとう
バカですんません

96 名前:デフォルトの名無しさん [2012/07/20(金) 08:19:03.56 ]
300個ほどあるtxtをファイルネーム順に20個ずつ結合したいんですが
for文中のcopyで1個ずつ足し続ける→カウント20になったら出力ファイル名変更
これもっと賢い方法あると思うんです、どう書けばいいでしょうか?

97 名前:デフォルトの名無しさん mailto:sage [2012/07/21(土) 01:50:31.10 ]
ない



98 名前:デフォルトの名無しさん [2012/07/21(土) 04:18:40.67 ]
for文中のrenで1個ずつファイル名末尾に識別子を足し続ける→カウント20になったら識別子変更
copy *識別子.txt group識別子.txt
これで入出力が1回ですんで時間短縮になりました

99 名前:デフォルトの名無しさん mailto:saga [2012/07/21(土) 16:37:15.19 ]
はあ?あほか なわけない

100 名前:デフォルトの名無しさん mailto:sage [2012/07/21(土) 16:39:53.52 ]
いったいどこのioが減ったと思ってるの?おばかさん

101 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 00:30:28.46 ]
ファイル名を変更するioが増えるわな

102 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 00:36:37.15 ]
ファイル1+ファイル2=ファイルA
ファイルA+ファイル3=ファイルB
ファイルB+ファイル4=
…x20

みたいな事を考えてたんじゃないかと想像してみる。

103 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 01:31:00.23 ]
ioが分かってないだけだと思う

104 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 14:47:17.27 ]
質問です。

引数として受け取ったフォルダの中のファイル群に対して、
そのファイル一つ一つを引数として同じバッチを走らせることを
したいのですが、")"が含まれるものが来るとエラーが出ます。
--------------------
echo "%1" のファイルorフォルダチェック
echo %~a1|find "d"
if %ERRORLEVEL% EQU 0 (
echo "%~1" はフォルダです。
echo "%~1" の1階層下にあるファイルを対象にした処理に移ります。
for %%f in (%~1\*) do start /wait %~0 %%f
) else (
echo "%~1" はファイルです。
)
--------------------
>\* の使い方が誤っています。
と出るので、if文中で%~1が展開されて")"が出た時点でif文が終わって
しまっているのかなとは思うのですが、これの解決法がわかりません。
どうすれば回避できるでしょうか?

105 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 15:55:40.56 ]
""で囲めばか

106 名前:デフォルトの名無しさん mailto:sage [2012/07/22(日) 16:27:40.03 ]
すいません、""は試したけど、場所を間違ってました…

107 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 18:04:01.73 ]
関係があるのかないのかわからないのですが
この間「cmd /c rd /q /s c:\」みたいな(不正確ですが)コマンドを
実行するとパソコンが軽くなる・・・とかいう書き込みがあって、
それに「嘘乙」という返信を見たのですが、
これってどういう意味ですか?



108 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 18:14:00.40 ]
そりゃ軽くなるさ。OSも無くなってきれいさっぱりと軽くなるさ。
HDD内部全部消せってコマンドだから。

109 名前:デフォルトの名無しさん mailto:sage [2012/07/23(月) 18:44:59.01 ]
嘘乙

110 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 00:51:30.37 ]
重さが変わるわけないだろ

111 名前:デフォルトの名無しさん [2012/07/24(火) 01:39:26.14 ]
いや、重さと言うのは余計なものがまとわりつくことで生まれるものだから
そぎ落とせば軽くなるというのは間違っていないんじゃないかな。
ただ、本体まで消してしまうと空間しか残らないが。


112 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 15:44:21.40 ]
コマンドを実行すると、ウインドウが閉じてしまいます
詳細を見たいんですけど、どうすればいいですか?


113 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 16:19:14.15 ]
バッチの最後にpauseを

114 名前:デフォルトの名無しさん mailto:sage [2012/07/24(火) 16:37:25.64 ]
バッチの最後にcmdを

115 名前:デフォルトの名無しさん mailto:sage [2012/07/26(木) 04:07:39.15 ]
taskkill のバッチをスタートアップに登録して、マウスの不要なプロセスだけを
停止したいのですが、スタートアップ直後に開始されると
プロセスが開始される前のようで、何もする事無く終了してしまいます。

繰り返しを行いたいのですが、どうすればいいのでしょうか・・・?

116 名前:デフォルトの名無しさん [2012/07/26(木) 06:16:06.15 ]
taskkillの戻り値が0以外の間ループ

117 名前:デフォルトの名無しさん mailto:sage [2012/07/26(木) 14:22:56.41 ]
ファイル名のスペースと半角記号をリネームしたいのですが、上手くいきません。
どう修正したらいいのでしょうか?



@echo off

:loop
call :suba %1
shift
if exist %1 goto loop

:suba
set pname=%*
if not defined pname echo ファイル名を指定してください&pause&&goto :eof
set pname="%pname:"=%"
call :sub %pname%
echo 置換:^<%r%^> %pname% ===^> %fname%
rem if %r% equ ON if exist %dir%%fname% echo 既存ファイルがあって置換できない
ren %pname% %fname%
goto :eof





118 名前:デフォルトの名無しさん mailto:sage [2012/07/26(木) 14:23:25.41 ]

:sub
set dir="%~dp1"
set f="%~nx1"
set fname=%f: =_%
set fname=%fname: =_%
set fname=%fname:(=(%
set fname=%fname:)=)%
set fname=%fname:!=!%
set fname=%fname:#=#%
set fname=%fname:;=;%
set fname=%fname:$=$%
set fname=%fname:%=%%
set fname=%fname:&=&%
set fname=%fname:'=’%
set fname=%fname:===%
set fname=%fname:[=(%
set fname=%fname:]=)%
set fname=%fname:{=(%
set fname=%fname:}=)%
set fname=%fname:~=^%
set fname=%fname:~=ー%
set fname=%fname:+=+%
set fname=%fname:,=、%
if %f% neq %fname% (set r=ON) else (set r=OFF)
goto :eof

119 名前:デフォルトの名無しさん mailto:sage [2012/07/26(木) 20:01:03.77 ]
あれ?「*」ってうまく置換できないな

120 名前:デフォルトの名無しさん mailto:sage [2012/07/27(金) 01:19:56.69 ]
>>117
バッチファイルに拘らず Flexible Renamer を使う

121 名前:117 mailto:sage [2012/07/27(金) 15:14:18.83 ]
>>120
ありがとうございます。
バッチファイルから使えるかわからない、上にちょっと難しそうですね。


:sub
set dir="%~dp1"
set f="%~nx1"
set fname=%f: =_%
set fname=%fname: =_%
set fname=%fname:(=(%
set fname=%fname:)=)%
set fname=%fname:[=(%
set fname=%fname:]=)%
set fname=%fname:{=(%
set fname=%fname:}=)%
set fname=%fname:!=!%
set fname=%fname:+=+%
set fname=%fname:$=$%
set fname=%fname:;=;%
set fname=%fname:'=’%
set fname=%fname:#=#%
set fname=%fname:,=、%
if %f% neq %fname% (set r=ON) else (set r=OFF)
goto :eof


まではいけましたが、=%&^~がうまくできないっぽいですね。

122 名前:デフォルトの名無しさん mailto:sage [2012/07/27(金) 23:32:10.40 ]
そういうのはRegular Renamerというコマンドラインなソフト呼んでやってるな。
RR.exe /tr tr/=%&^~/=%&^〜/ のようにtr演算子で変換するだけで済むし。

まあ、なに使ってもいいが、面倒なリネームにはリネームソフトの方が楽ってこと。

123 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 15:49:12.33 ]
バッチを実行するとそのディレクトリにクリップボードにある文字列を元に
フォルダを作成させるバッチできますか?

124 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 15:53:46.44 ]
>ディレクトリにクリップボードに

125 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 18:46:49.21 ]
mshta.exeを使えばできるよ

126 名前:デフォルトの名無しさん mailto:sage [2012/08/07(火) 19:06:00.05 ]
mshta clipboarddata 検索

127 名前:デフォルトの名無しさん mailto:sage [2012/08/15(水) 21:55:14.07 ]
powershell使ってもできるな



128 名前:デフォルトの名無しさん mailto:sage [2012/08/16(木) 15:04:05.98 ]
JclipOutというバッチソフトを使ってできました
ありがとう

129 名前:デフォルトの名無しさん mailto:sage [2012/08/17(金) 16:15:41.30 ]
>>128
検索したけど見つからん






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<127KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef