【.cmd】 バッチファイルスクリプト %11 【.bat】 at TECH
[2ch|▼Menu]
[前50を表示]
500:デフォルトの名無しさん
16/04/10 15:46:04.10 wyM3R/Jw.net
for /f

501:デフォルトの名無しさん
16/04/10 16:11:22.77 wyM3R/Jw.net
"
for /f "delims=" %%a in (hoge.txt) do
このコマンドで1つのファイルから交互に2つの変数に中身を代入できないでしょうか
*hoge.txt*
ほげ1
ajairhioa
ほげ2
aj329jagjal
これを%%aにはほげ1ほげ2、%%bにはajairhioa、aj329jagjalを順次代入したいです
"

502:デフォルトの名無しさん
16/04/10 17:35:06.95 DGt37MFb.net
set cnt=0
for /f "delims=" %%a in (hoge.txt) do call :sub %%a
for /f "tokens=1* delims=," %%a in (hogehoge.txt) do echo %%a %%b
pause &exit /b
:sub
if %cnt%==0 (
set LN=%1
set /a cnt+=1
exit /b
)
>>hogehoge.txt echo %LN%,%1
rem ↑ファイルに書き出す事に不都合があるなら↓
rem for /f "tokens=1* delims=," %%a in ("%LN%,%1") do echo %%a %%b
set cnt=0

503:デフォルトの名無しさん
16/04/10 18:06:01.41 DGt37MFb.net
rem 3行毎
set cnt=1
for /f "delims=" %%a in (hoge.txt) do call :sub %%a
for /f "tokens=1,2* delims=," %%a in (hogehoge.txt) do echo %%a %%b %%c
pause &exit /b
:sub
if %cnt% LSS 3 (
set LN=%LN%,%1
set /a cnt+=1
exit /b
)
>>hogehoge.txt echo %LN%,%1
set LN=
set cnt=1

504:デフォルトの名無しさん
16/04/10 20:10:23.92 R4xtJDTH.net
wsh併用だと
@if (0)==(0) echo off
for /f "tokens=1,2 delims=," %%a in ('cscript.exe //nologo //e:jscript "%~f0"^<hoge.txt') do (
echo %%a , %%b
)
goto :eof
@end
var StdIn=WScript.StdIn;
while (!StdIn.AtEndOfLine){
var s=StdIn.ReadLine();
if(!StdIn.AtEndOfLine) WScript.Echo(s+","+StdIn.ReadLine());
}

505:デフォルトの名無しさん
16/04/11 21:54:33.79 Vzz4aFRc.net
>>483-485
バッチまったくの初心者であまりわかりませんでしたがありがとうございます
なにか初心者向けで体系的に学べるサイトとかありますかね?

506:デフォルトの名無しさん
16/04/11 21:58:42.43 Vzz4aFRc.net
>>483-485
バッチまったくの初心者であまりわかりませんでしたがありがとうございます
なにか初心者向けで体系的に学べるサイトとかありますかね?

507:デフォルトの名無しさん
16/04/11 21:59:22.47 Vzz4aFRc.net
書き込んでないと思って連投してしまいましたすみません

508:デフォルトの名無しさん
16/04/11 22:40:01.79 OwO3FuPu.net
PowerShell_ISE で、やった方がいいよ

509:デフォルトの名無しさん
16/04/11 22:59:56.31 Vzz4aFRc.net
powershellはchecksum使う時くらいしか使わないんですが、powershellのほうが初心者には使いやすいのでしょうか?

510:デフォルトの名無しさん
16/04/11 23:11:45.22 kHX/TE9c.net
>>490
はい

511:デフォルトの名無しさん
16/04/12 00:30:07.81 cKwKVfMZ.net
powershellはファイル属性を変えるときだけ使っている
テンポラリー属性ってcmdからだと変更できないよね

512:デフォルトの名無しさん
16/04/12 00:31:51.05 iN7RaFvn.net
PowerShell_ISE で、
$i=0
$evenStr=''
$oddStr=''
$ary = (cat hoge.txt) -as [string[]]
foreach ($line in $ary) {
if($i % 2 -eq 0){
$evenStr += $line
}else{
$oddStr += $line
}
$i++
}
Write-Output $evenStr, $oddStr
入力
1
2
3
4
5
出力
135
24

513:デフォルトの名無しさん
16/04/12 04:11:38.82 mqOre39w.net
バッチファイル今から覚えるのは無駄すぎる
せめてvbsにした方がいい

514:デフォルトの名無しさん
16/04/12 05:40:07.79 Hl1a/qVy.net
覚えるってほど御大層なモノじゃねーじゃん
精々 %1 && >> とかの幾つかのお約束事と最初に躓くコマンドはforくらい
他のコマンドやオプションはggってリファレンス見ればいいんだし
echo pause set if for call goto start move xcopy ren del dir findstr
これだけ知ってればちょっとしたファイル操作に便利だし他に比べハードル低いよ
複雑な事をするにはバッチは向かないし制約もあるから他が良いのは間違いないけど

515:デフォルトの名無しさん
16/04/12 08:15:23.59 smwPn8rR.net
他のを覚えてからでも遅


516:くはないかな



517:デフォルトの名無しさん
16/04/12 08:40:26.31 xYAotuK9.net
ちょっと凝ったことしようとしたらいきなり面倒になったり
トラップもそれなりにあるし
わざわざ覚える言語ではないと思う
bash 並みになればまだいいんだが

518:デフォルトの名無しさん
16/04/12 10:03:04.09 W9B2ZLoA.net
今から覚えるにはちょっと…というのは解かるんだが
一番簡単なものだし、ちょこっとやる分には良いとっかかりになると思うよ
ヘルプ読むだけで十分概要はわかるしね
それから何にいくのかは、自分が何に興味あるかで決めればいい

519:デフォルトの名無しさん
16/04/12 22:44:22.00 N5k4ywKZ.net
皆さんありがとうございます
cmdは少し学んで、その後win10に向けてshellを学ぼうかなと思います

520:デフォルトの名無しさん
16/04/29 16:15:40.02 Du8RELkw.net
ワイルドカード指定で否定は出来る?
例えば「指定フォルダ以下に存在する拡張子がtxt"以外"のファイルを全て削除(サブフォルダ含む)」
みたいな事をやりたいんだけど。

521:デフォルトの名無しさん
16/04/29 21:30:07.02 nOk/Iq10.net
>>500
そういう場合は
for /f %%i in ('dir "%1" /a-d /b /s | findstr /r /i /c:".txt\>"') do del %%i
というバッチを書いて第一引数に指定フォルダを渡せばいいんじゃないの??

522:デフォルトの名無しさん
16/04/29 21:35:10.00 nOk/Iq10.net
間違えた。
for /f %%i in ('dir "%1" /a-d /b /s | findstr /r /i /v /c:".txt\>"') do del %%i
だった。

523:デフォルトの名無しさん
16/04/29 23:27:50.12 Du8RELkw.net
ワイルドカードで否定な指定は無理なのか。
ありがとう。ちょっと検討しなおしてみる。

524:デフォルトの名無しさん
16/04/30 22:24:06.87 HLsp90ue.net
>>503
ワイルドカードで否定、というより…
hoge.txt hoge.doc hoge.xls … とあったとしてだよ。
.txt 以外の拡張子を持つファイル、という指定は Linux の bash でも 1コマンドでは出来ないよ??
とりあえず、俺の知る限りのコマンドラインシェルでは出来ない。

525:デフォルトの名無しさん
16/05/01 02:14:20.07 f7rDjALb.net
除外指定と言いたいのだろうけど三国人か?
496弄れば除外設定の拡張子もサブフォルダ以下を含めるかも引数で指定出来るようになるだろうに何か問題あるの?

526:デフォルトの名無しさん
16/05/01 08:38:28.34 4tDBI2/Z.net
正規表現だと否定って言うのは普通に使うから別に違和感ないけどね
それ以前にいきなり三国人とか言い出す癖直した方がいいと思うよ

527:デフォルトの名無しさん
16/05/01 11:19:50.80 tKi6j9CT.net
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
URLリンク(twitter.com)
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw

The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません


528:デフォルトの名無しさん
16/05/01 15:01:02.76 gt2lBnxw.net
一般的ではないが、bash他にはそれっぽい拡張があるといえばある>否定
shopt -s extglob; ls !(*.txt)

529:デフォルトの名無しさん
16/05/01 20:56:52.01 w3ycpbWL.net
>>506
それで思い出したけど、ワイルドカードにはそもそも否定、っていう概念が無いのよね。
>>508
それは知らなかったぜ…。が、やっぱ拡張であって1コマンドじゃないのね。

530:デフォルトの名無しさん
16/05/02 11:40:31.88 ZqwyA4jL.net
xcopyだと /EXCLUDE で除外したいパスを指定できるけど
そういえば他のコマンドでは無いよね。

531:デフォルトの名無しさん
16/05/09 14:25:03.70 LpHkpPcH.net
>>506
> 正規表現だと否定って言うのは普通に使うから別に違和感ないけどね
普通に使う??
否定の正規表現がどのくらい面倒臭い代物か知ってて言ってんのかよ

532:デフォルトの名無しさん
16/05/09 20:31:48.60 4hkTezx/.net
>>511
若いなお前

533:デフォルトの名無しさん
16/05/11 20:07:41.82 +ByNjd23.net
>>511
お前は正規表現の前に日本語を勉強すべき

534:デフォルトの名無しさん
16/05/15 23:09:30.40 0PD+6ouG.net
Windows10 でコマンドプロンプトの透明度(不透明度)が設定できますが
color で色を変えるように、透明度の変更をコマンドでやるには
どうすれば良いでしょうか?

535:デフォルトの名無しさん
16/06/06 05:31:09.64 /VUqLFGt.net
フォルダ内に含まれるファイル名(若いファイル名)を取得して、そのファイル名
をフォルダ名としてリネームすることはできないのでしょうか?
■フォルダ1
┣ファイル1
┣ファイル2
■フォルダ2
┣ファイル3
┣ファイル4
といったフォルダ構造があったばあい、
■ファイル1
┣ファイル1
┣ファイル2
■ファイル3
┣ファイル3
┣ファイル4
といった感じにリネームしたいんです
ヒントがあれば教えてください

536:デフォルトの名無しさん
16/06/06 05:36:07.56 mrKNlhKB.net
>>515
再帰呼び出し

537:デフォルトの名無しさん
16/06/06 05:59:54.20 JVcEODJX.net
ソフ板の libre office スレで聞いていた人かな、あっちではスレを移動するとの
断りも何もせず放置したように移動してきてるみたいだけど
別人ならごめん
結果的に同名のフォルダとなる場合のリネームのルールさえ決めておけば
for でやってもそんなに難しくはない

538:デフォルトの名無しさん
16/06/06 06:39:56.64 /VUqLFGt.net
>>516
ファイル名をフォルダ名にリネームしている、参考ページがあれば教えてもらえないですか?
>>517
別人ではないですよ。
forを使う場合は、どうやるんでしょうか?
サンプルが載ってるページがあれば教えてください

539:デフォルトの名無しさん
16/06/06 07:38:12.87 mIdKUrWt.net
>>518
こんな感じ
@echo off
for /f "delims=" %%i in ('dir /b /on /ad') do (
for /f "delims=" %%j in ('dir /b /o-n /a-d "%%~i"') do set name=%%~j
call ren "%%~i" "%%name%%"
)
フォルダ名の重複によるリネームエラーを変名してリトライするなら
上の call ren "%%~i" "%%name%%" を
set src=%%~i
call set dst=%%name%%
call :ren
の3行に代えて下を追加(引数渡しでなく環境変数渡しなのは、特殊な文字の変換をなるべく防ぐため)
goto :eof
:ren
ren "%src%" "%dst%" 2>nul
set suffix=1
if %errorlevel% equ 0 goto :eof
:loop
ren "%src%" "%dst% (%suffix%)" 2>nul
set /a suffix+=1
if %suffix% gtr 10 echo ***打ち切り***&goto :eof
if %errorlevel% neq 0 goto :loop
goto :eof

540:デフォルトの名無しさん
16/06/06 08:36:49.68 /VUqLFGt.net
↑回答ありがとうございます。自分には理解できないので
調べて読み解いて、理解できあなかったらまた質問


541:ウせてもらいます。



542:デフォルトの名無しさん
16/06/06 12:24:37.84 /VUqLFGt.net
↑無事動作しました。
ありがとうございました。
今まで、相当に無駄な作業してました。

543:デフォルトの名無しさん
16/06/06 15:17:54.02 mIdKUrWt.net
>>521
余計なことかも知れないが、空のフォルダがあった場合に変になるのでそのフォルダはリネームしないことにすると以下のようになる
@echo off
pushd %1
for /f "delims=" %%i in ('dir /b /on /ad 2^>nul') do (
call set folder=%%~i
call :search_file
call :ren
)
popd
goto :eof
:search_file
set fname=
for /f "delims=" %%j in ('dir /b /on /a-d "%folder%" 2^>nul') do set fname=%%~j&goto :eof
goto :eof
:ren
if not defined fname goto :eof
set suffix=1
ren "%folder%" "%fname%" 2>nul
:retry
if %errorlevel% equ 0 goto :eof
ren "%folder%" "%fname% (%suffix%)" 2>nul
set /a suffix+=1
if %suffix% gtr 10 echo ***打ち切り(%folder%)***&goto :eof
goto :retry

544:デフォルトの名無しさん
16/06/06 17:00:29.53 mIdKUrWt.net
訂正
call set folder=%%~i
for /f "delims=" %%j in ('dir /b /on /a-d "%folder%" 2^>nul') do set fname=%%~j&goto :eof
 ↓
set folder=%%~i
for /f "delims=" %%j in ('dir /b /on /a-d "%%folder%%" 2^>nul') do set fname=%%~j&goto :eof

545:デフォルトの名無しさん
16/06/06 19:49:58.32 wj+hntm6.net
>>521
相当に無駄なスレ違いの質問はクローズしよう
スレリンク(software板:665番)

546:デフォルトの名無しさん
16/06/06 20:27:13.87 kp8pJweP.net
libre office スレのもんだけど
マルチ宣言してる奴に快く回答するとか
まじクズっすねー

547:デフォルトの名無しさん
16/06/08 21:05:04.00 rpxHmTxH.net
>>522
そこはかとなくダサい気がするのだがうまく言えなくてもどかしい。

548:デフォルトの名無しさん
16/06/08 21:09:54.69 rpxHmTxH.net
>>525
面白い課題や面白い発見自身に罪は無い。
それを提示した人間がたとえ殺人者でも、その課題や発見自身は俺は歓迎する。
もし、Libre Office の開発者の一人が殺人を犯したからといってお前は Libre Office を使うのを止めるか?
止めるのであれば非難していただいて結構。

549:デフォルトの名無しさん
16/06/08 22:04:51.84 sUmK8XFr.net
>>527
その例えはおかしいね
マルチ質問に返答するのはマナー違反って話なんだから
つーか例える必要ないでしょ
マルチ質問に答えることがマナー違反ではない理由を言えばいいだけだ

550:デフォルトの名無しさん
16/06/08 22:23:27.09 rpxHmTxH.net
>>528
> マルチ質問に返答するのはマナー違反って話なんだから
間違い。
1. マルチ投稿は迷惑かもしれないが、課題としては良問と思った。情状酌量の余地あり。
2. マルチ投稿に答えるのがマナー違反だという話は聞いたことがない。
3. 別板からわざわざ出張って「○○のもんだけど」とか言われてもシラネ。掲示板のルール無視。それこそ893まがいの行為。

551:デフォルトの名無しさん
16/06/08 22:29:07.11 rpxHmTxH.net
>>528
お前がインターネットのルールブックなわきゃねぇんだ。マナーだのなんだのごたくヌカすな。
>>522
全体的にエラー処理まわりが気になるけど、そこは置いとく。
ren じゃなくて move じゃない?ren にすごく違和感…。

552:デフォルトの名無しさん
16/06/08 22:34:56.16 sUmK8XFr.net
>>529
1. あなたがそう思うのは勝手だけどそれに対してクズと呼ばれるのは仕方ないこと
2. マナー違反を受け入れるのもマナー違反なのは当然
3. 俺に言われても知らん
あとさ、例えが例えになってないことについてどう思ってんの?

553:デフォルトの名無しさん
16/06/08 22:49:05.28 JbG4hFO7.net
わざわざ出張ってこなくていいから大人しく返ってくれ
このスレは過去を見てもわかるように、親切な人間達が回答してくれる珍しいスレなんだからさー

554:デフォルトの名無しさん
16/06/09 00:29:49.83 mVcmv6vY.net
向こうのスレ見てきて状況がわかった
マルチって言ってるけど、向こうで最後に書いてから半日経ってからこっちに書いてるじゃん
それになんだか追いだされたように見える
まあ、さよなら、を言わずに出てったのは礼儀知らずかもしれないが
そんなのは世の中にいっぱいいるんで今更事たてて言うほ


555:どじゃないな



556:デフォルトの名無しさん
16/06/09 00:38:52.14 M1aHpfX0.net
setlocal
cd フォルダ
endlocal
でせっかくcdしても元に戻ってしまう

557:デフォルトの名無しさん
16/06/09 00:56:26.88 mVcmv6vY.net
>>534
setlocalはそういうもんだから
逆に環境が引き継がれちゃったらsetlocal使う意味が無くなる
そういうことやりたかったら、
setlocal
set result=999

endlocal&set result=%result%&cd フォルダ
ってやると、環境変数を返すことも出来る

558:デフォルトの名無しさん
16/06/09 01:29:34.62 M1aHpfX0.net
>>535
ありがとうございます
そんな高度な技ができるとは知らなかったです

559:デフォルトの名無しさん
16/06/09 02:52:40.71 3N2Gwx2N.net
>>526
suffixとかかな
for /f "delims=" %%j in ('dir /a-d /b "%folder%" 2^>nul ^|^|goto :eof') do ren "%folder%" "%%~nj" &&goto :eof
でren出来なかった場合のみerrorlog吐くとかの方がスマートかも
まあバッチだし。。細かいとこ凝るならpsとかの方が

560:デフォルトの名無しさん
16/06/09 14:01:20.29 mVcmv6vY.net
>>537
for /f "delims=" %%j in ('dir /a-d /b "%%folder%%" 2^>nul ^|^|goto :eof') do ren "%folder%" "%%~nj" &&goto :eof

561:デフォルトの名無しさん
16/06/09 14:12:43.69 mVk0iXAO.net
> マルチ質問に返答するのはマナー違反って話なんだから
質問がマナー違反なんて話は知られてるが
返答がマナー違反なんて初めて聞いたけど、誰かソース知ってる人いる?
この人の妄想かな

562:デフォルトの名無しさん
16/06/09 16:04:09.94 Et4Ks3FV.net
こんなところで他人に何かを求めたりルールやマナーを押し付けるのは愚行
自分がレスしたきゃするし興味無いならスルー
自治厨ってのは自分の耐性の低さを尤もらしい大義名分で誤魔化しているだけに過ぎない
自治厨や創価みたいな制裁厨は荒らしと同じゴミ

563:デフォルトの名無しさん
16/06/10 08:47:12.85 7xQ2IbxD.net
>>539
返答しちゃうとマルチでいいんだ
って勘違いする奴がいるってことだろ
普通それぐらいわかると思うが...

564:デフォルトの名無しさん
16/06/12 22:53:45.89 T3khqEs4.net
>>541
普通と言われても、それを実際に文章で目にした記憶ないんだよな
ソース張れるか?妄想URLじゃなくてさ。
クロスポストマルチポストという言葉が生まれたニュースネットならまだしも。
個々のスレで関連性の無い2chだと正直どうでもいい。
ていうか今ニュースネットってどうなってるんだろ。まだあるんかな?

565:デフォルトの名無しさん
16/06/12 23:23:12.75 Dejri5g9.net
>>542
理解力ないってこと?

566:デフォルトの名無しさん
16/06/12 23:29:33.63 nN2o7Cuz.net
誰と闘ってるの

567:デフォルトの名無しさん
16/06/13 02:21:55.70 bKXy9+E3.net
マルチがマナー違反なら答えないほうが良いと思うが普通の考えだと思う
所詮はマナーだからもう終了しろ

568:デフォルトの名無しさん
16/06/16 16:19:50.79 Y8ybIIT3.net
マナー違反として問題になるならあっちこっちで
これがダメあれがダメとダメ出しのソースが出るんだよ。
マルチポストする方に関しては検索するとボロボロ出てくるだろ。
しかしこれがマルチポストに回答する事に関しては出てこんのだよな。
これの意味するところはつまりそこまで問題ではない、問題にする人はいないってこった。
回答する気が無いならしなければいいだけ。
回答した人に対してマナー違反だ回答するな等と文句付けるのは何様?筋違いだと思うね。
ぶっちゃけ俺も気にしないし。気にする人見たら今のように珍しいなあと思うな。

569:デフォルトの名無しさん
16/06/16 16:49:06.61 pl2Ydjf9.net
おまえらしつけーよ
下らないスレチネタで議論する暇があったら面白バッチネタの一つでも書きやがれ
で、PowerShellってどうよ?

570:デフォルトの名無しさん
16/06/16 17:50:03.03 dWCIrllM.net
Power Shellにはなんか食指が動かない(XP


571:使ってるんで) まあ簡単な奴以外はwsh(jscript)を使うな でも今Rubyが面白いかもって思ってる(Perlも入れたけどそっちは殆ど手付かず) .JScriptの中からScriptControlでRubyScriptの関数をCALLするとか変態的なことを試してるところ (.rbで作って、.js(.wsf)に埋め込むっていう非効率的な作業をやってる)



572:デフォルトの名無しさん
16/06/16 23:14:35.32 oJOkyOjy.net
パワーシェルは出来る事も多いし 痒いとこ(チンポじゃないよ)にも手が届くけど
なんとなくバッチ組めちゃうdosコマンドに比べたら難しく感じちゃうな
ただ複数のアプリの同時起動が簡単に出来るからそういう用途ではよく使ってる

573:デフォルトの名無しさん
16/06/17 07:01:08.70 TQ7oR46s.net
>>546
>>543

574:デフォルトの名無しさん
16/06/17 07:14:29.17 TQ7oR46s.net
>>547
書き方とかにちょっと違和感があるけど慣れればかなり使えるって感じ
特にバッチは文字列の扱いが色々面倒だからファイル名を切った張ったするようなケースだと PowerShell の方が楽
WPF 使って GUI もいけるし

575:デフォルトの名無しさん
16/06/17 14:10:51.86 ZjDSffK/.net
>>550
お前がな…

576:デフォルトの名無しさん
16/06/17 14:14:36.97 ZjDSffK/.net
個々人がマナー違反だと思うのはその人の勝手。
だが、「皆が」そうだというならお前以外の意見つまりソースを出せと。
そんなことも理解できんのね

577:デフォルトの名無しさん
16/06/17 14:45:53.78 kt8UtU4J.net
>>546
本来、内容はどうであれ、マルチポストの相手をすべきではないんだよ。
マルチポストとか思うから、マナーだとか言い出すんだろうけど、
コピペの荒らしだと思えばいいんだよ。相手にするヤツがバカだろう?

578:デフォルトの名無しさん
16/06/17 15:22:57.71 PGPlVx2O.net
いやー、そのレスでちょっとは盛り上がったじゃん
十分このスレでの意義はあったと思うよ
元のスレのofficeじゃスレ違いだとかいってハブって追い出したくせに
こっちに来たら追いかけてきてイチャモンつけるって性格悪いな

579:デフォルトの名無しさん
16/06/17 18:35:44.26 oyCWF+hy.net
>>555
そいつに関しては性格悪いなんてもんじゃないでしょ
わざわざ他スレへ出張って文句言う粘着性はガイキチ
池沼は相手にしないが吉
>>548-549
>>551
いや、おまえがスレチだろってツッコミ待ちだったんだがおまえら良い奴だな
ありがとう
既に.NET知ってる人は楽なんだろうけど一から覚えるの面倒臭くて。。
ましてやPSの為だけにとなるとなかなか重い腰が動かず
>ファイル名を切った張ったするようなケースだと
まさにこの用途なんだよね
バッチから文字列の扱いを少し便利にしてくれるくらいで良かったんだけど覚える量的に一気にハードル上がって面倒臭い
覚えてしまえば楽になりそうなのは分かってるので、ぼちぼちやってくわ

580:デフォルトの名無しさん
16/06/17 18:55:09.01 TQ7oR46s.net
>>554
まあ、そう言うこと
ググって部屋のなかにうんこするなとかの書き込みが少ないからうんこするぜ
って言うのと同じ
考える力のない奴に何を言ってもしょうがない

581:デフォルトの名無しさん
16/06/17 18:58:07.69 TQ7oR46s.net
>>556
対話で使えなくてもいい
将来を心配したことがない
なら vbs/jscript + wsh でもいいかも

582:デフォルトの名無しさん
16/06/19 09:59:28.72 rDn80OX3.net
>>557
うんこと考えてるのは実はお前だけってな
お前さん理想と現実の区別付いてないだろ?

583:デフォルトの名無しさん
16/06/19 11:27:46.12 Pvc+naRU.net
>>559
>>543

584:デフォルトの名無しさん
16/06/19 17:51:44.69 Ujr


585:NrWKl.net



586:デフォルトの名無しさん
16/06/19 20:28:17.53 N0SKT7vZ.net
> 2ちゃん初めてか?
まだこんなこと言ってる奴がいるんだなw

587:デフォルトの名無しさん
16/06/20 05:15:32.88 bz6tTT9I.net
そもそも「2ちゃん」という言い方自体、自称古参爺しか使わん

588:デフォルトの名無しさん
16/06/20 12:37:29.60 1rHeBxTu.net
ちゃんちゃん

589:デフォルトの名無しさん
16/06/20 12:56:47.33 XUIKeVkP.net
2chって言うよな

590:デフォルトの名無しさん
16/06/21 23:17:02.70 wIBHL76T.net
言うの?
発音はツーチャンネル?

591:デフォルトの名無しさん
16/06/22 03:22:26.83 UKX8/FIx.net
声には出さないけど「にちゃん」って読んでるな
書く時は2chって書くかな

592:デフォルトの名無しさん
16/06/22 08:59:59.99 ffHjJb8n.net
>>567
漏れも

593:デフォルトの名無しさん
16/06/24 01:13:29.70 buggiI8H.net
俺は教育テレビって言ってる
Eテレは馴染めん

594:デフォルトの名無しさん
16/06/24 02:23:17.48 iovZLto/.net
教育テレビは3チャンネルだと思ってたけど、
地デジは3ちゃんTVK♪というCM思い出して
違うことに気づいた。

595:デフォルトの名無しさん
16/06/27 10:51:32.41 IRTRDse4.net
dir /Q はオーナー名が長いとファイル名とくっついてしまう欠陥コマンドだった

596:デフォルトの名無しさん
16/06/27 13:44:52.16 cmd3G8BZ.net
会社のサーバに散在している.batファイルを片っ端から削除したい。いや、マジで。
URLリンク(el.jibun.atmarkit.co.jp)

597:デフォルトの名無しさん
16/06/27 13:56:09.99 YSZG9z+3.net
del /f /s /q *.bat
でよくね?

598:デフォルトの名無しさん
16/06/27 14:13:24.61 RStewB0e.net
個人用ローカルPCだけど俺も何に使ったか分からないbatファイルがそれなりに残ってるわw
1度整理したから大量ってほどではないけど
ニッチな用途だとファイル名だけでは用途を思い出せないのが難点

599:デフォルトの名無しさん
16/06/27 14:35:10.14 N5RLWdSz.net
batなんて使わなくなったら即削除してるから残ってるのはせいぜい20個程度だ

600:デフォルトの名無しさん
16/07/03 21:43:03.57 vq6Z+j1h.net
「削除した」なら許せるが、削除したい(削除できなかった)ならただの糞文

601:デフォルトの名無しさん
16/07/03 22:02:09.39 T1/0jYLy.net
読んでねーけど、したいけど出来ないって愚痴なんじゃねーの?
何に使うか分からんようなゴミを鯖に残してて勝手に消したら老害が何で消した?いつか使うかもしれんのに!って怒るとか
いつかって何だよって言う。たかがbatでアホかって老害SEあるあるネタ

602:デフォルトの名無しさん
16/07/03 22:37:12.83 CJuDkW1k.net
んー、そもそもバッチを使う(作る)人に対する人格否定、という感じのブログ
アナウンス出して全て消しゃいいじゃん、というのが率直な感想
でもやりたいのは、バッチを使う(作る)人の排除みたいだから、
社長になって独裁人事するのが一番の解決なんだろうね

603:デフォルトの名無しさん
16/07/06 01:43:37.05 j2aYQoha.net
整理整頓が出来ていればいい話
バッチに限った事じゃない
不要の見極めも難しいから
消せずに残ってゴミ屋敷が現実

604:デフォルトの名無しさん
16/07/07 00:24:13.51 WGF782sG.net
会社のサーバだとうちもバッチに限らずなんだかよく分からんのがいっぱいあったな
いらなさそうなのまとめて圧縮して1年後の日付書いてこの日まで使わなければ消すってしといた

605:デフォルトの名無しさん
16/07/07 14:56:47.42 TsrNo+6t.net
そうやってなんか対処してるなら話はわかるんだけど
うぜぇうぜぇ


606:チて言うだけで自分では対処しないで放置ってのはもう…



607:デフォルトの名無しさん
16/08/09 17:07:41.16 j5HqbEBX.net
Windows 10のLinuxサブシステムを狙った攻撃が今後登場する可能性
URLリンク(srad.jp)
免疫力がつくまでしばらく待った方がいいのか知らん

608:デフォルトの名無しさん
16/08/14 22:50:59.47 r/0nUjHR.net
そもそもβなんだし、素人さんが手を出していい物じゃないんだけどな。

609:デフォルトの名無しさん
16/08/15 00:25:59.77 8W38K+Qq.net
まだcygwinのほうが安全ということなのかね

610:デフォルトの名無しさん
16/08/21 07:59:09.76 zhyP4GkP.net
今んとこサーバ用途は全く想定してないからさして問題にはならないだろう
最終的にはMacのポジションを目指すのだろうからそれまでに直しておけば良い
テクノロジーカンファレンスがSurfaceで埋まる日は来るか
URLリンク(www.buildinsider.net)

611:デフォルトの名無しさん
16/09/06 18:28:00.80 G35PExva.net
Windows標準のコマンドプロンプトウィンドウをタブ化できる「ConEmu」
URLリンク(osdn.jp)
多数のDOS画面でお仕事する人向け

612:デフォルトの名無しさん
16/09/06 18:51:20.42 rT4OuLmz.net
ConEmuも所詮バックグランドでcmd動かしてて、
cmd単独よりは少し便利になるものの、
元々の日本語の表示の不具合(端が切れる)を引き継いでるからなぁ。
cmd完全互換のまともなシェルはないものかねぇ。

613:デフォルトの名無しさん
16/09/07 18:29:47.35 b6UGEvRF.net
タブでまともに機能するのはすごいたぶちさんだけ

614:デフォルトの名無しさん
16/09/07 19:12:06.44 eCxhE93W.net
.BATと.CMDでは何が違うのでしょうか?
使える命令などに違いがあるのでしょうか?
教えてください。

615:デフォルトの名無しさん
16/09/08 00:57:15.94 54d0WlHM.net
>>589
違いは無いよ
DOSの時代からWin16の時代は拡張子はBATであり、
Win32の時代からMSはCMDに変えたがったみたいだが以前としてBATが主流となってるだけ

616:デフォルトの名無しさん
16/09/08 01:30:50.71 MGX2ZdyU.net
cmd は WindowsNT, OS/2 由来じゃなかったっけ?
例えば OS/2 だと bat にすると DOS互換ボックスでのバッチファイル動作で
cmd にすると OS/2 ネイティブ動作

617:デフォルトの名無しさん
16/09/08 02:06:01.27 54d0WlHM.net
>>591
そうだったっけ?
OS/2は殆ど使ったことない(さわりだけ)んで、拡張子batが動作したかどうか忘れちゃったんだけど
(暗黙の了解でcmdでしか使ってなかった)

618:デフォルトの名無しさん
16/09/08 02:15:48.19 54d0WlHM.net
ちなみに俺が使ってたOS/2はver.1.2のごく初期の奴だったんで
そもそもDOS互換とか存在してなかった気もする

619:デフォルトの名無しさん
16/09/08 03:45:32.33 Jzexm0YP.net
>>589
基本的には同じと思っていいけど厳密には少しだけ動作に違いがある
URLリンク(stackoverflow.com)

620:デフォルトの名無しさん
16/09/08 04:05:36.46 PAzqK7FZ.net
.bat 普通のバッチファイル用途。
.cmd ruby -x でrubyのコード埋め込む為に使用する。シンタックスハイライトをruby向けに設定。
という超ローカルな使い分けをしている

621:デフォルトの名無しさん
16/09/08 21:40:41.34 5x3R57hb.net
setlocal enabledelayedexpansion
set STR="aaa"
if STR=="aaa"(
STR = "bbb"
echo !STR!
)
echo !STR!
echo %STR%
遅延環境変数が分からない


622:のですが、自分の環境だと全て"aaa"になります。 どこが間違っているんでしょうか?



623:590
16/09/08 21:53:39.72 5x3R57hb.net
すいません。適当に書いてしまったのを訂正します
・"bar"が出て上手く行かないケース
@echo off
setlocal enabledelayedexpansion
set foo2="bar"
if %foo2% == "bar" (
set foo2 = "hoge"
echo !foo2!
)
pause
・"hoge"が出て上手く行くケース
@echo off
setlocal enabledelayedexpansion
set foo="bar"
if %foo% == "bar" (
set foo="hoge"
echo !foo!
)
pause
この2つの違いが分かりません。

624:デフォルトの名無しさん
16/09/08 21:58:24.35 5x3R57hb.net
自己解決しました
foo2と=の間に空白があるのが原因でした。
バッチは文字列を代入する際には空白があってはいけないのですね。
set foo2= "hoge"
としたら上手く行きました。
set /a foo2 = 10
では空白があっても行けたのですが、文字列の場合はダメなんですね。

625:デフォルトの名無しさん
16/09/09 03:51:09.43 LpeB3e0i.net
Linuxのシェルスクリプトでも、変数代入時、= の前後に、半角空白を入れられない
a=b
a = b これはダメ
こういう点が、プログラミング言語としてはクソなんだよ。
PowerShell_ise を使いな

626:デフォルトの名無しさん
16/09/09 06:34:14.46 Sx9RRTJO.net
>この2つの違いが分かりません。
そんな違いわかりたくもない
バッチファイルでif文をトラブルなく使う - Qiita
URLリンク(qiita.com)
バッチファイルでif文を使っていてハマったので、ハマらないための書き方と注意点をまとめてみた
解決方法
何も考えず必ず以下の形で書く。
if 条件 ( ←(1)
call :サブルーチン名 引数 ←(2)
) else if 条件 ( ←(3)
call :サブルーチン名 引数
) else ( ←(4)
call :サブルーチン名 引数
) ←(5)

627:デフォルトの名無しさん
16/09/10 14:10:07.42 WyiyFmBQ.net
>>597
ダブルクォート記号を意図して含めたいならそういう記述もありだろうね
だけど、純粋に文字列だけ比較したいだけなら変数名も含めてくくって、あとは判定部分で整形する方が自由度がある
set

628:デフォルトの名無しさん
16/09/10 14:14:02.54 WyiyFmBQ.net
途中で切れた?全角でリトライ
SET "foo= b a r "
IF "%foo%"==" b a r " (
IF "%foo%" == " b a r " (
のようにすれば前後の空白も含めて評価されるし、この場合どちらも同じ結果が得られる
なので、>>598の「バッチは文字列を代入する際には空白があってはいけないのですね。」は誤り
変数の文字列前後、if文のイコール記号の前後の空白の有無で意図しない比較結果になり得る記述は避けたほうがいいのは自明
環境変数の遅延展開に関しては、カッコで囲んだ複文の挙動を把握した上で適切に使う
環境変数はあとから再利用する性質上、意図しない文字や空文字になってしまうのが一番怖い
別解としては、call set "foo=hoge" があり、echo;%%foo%% などのようにパーセント記号を重ねても同じ結果が得られる
こちらは setlocal enabledelayedexpansion は不要、この方法は公式とは言えないのでユーザーのお好み次第といったところ

629:デフォルトの名無しさん
16/09/11 01:07:52.20 4x/hjQLW.net
sqlite3のコマンドラインツールでDB読込み時間を測って遊んでたら
sqlite3 hoge.db "SELECT * FROM TEST" > nul よりも
sqlite3 hoge.db "SELECT * FROM TEST" > "c:\Temp\hoge.txt" のほうが
出力完了までの時間が短かったんですが、出力をnulに捨てるのって
普通にファイルに吐くより遅くなるもんなんでしょうか。

630:デフォルトの名無しさん
16/09/11 01:24:31.36 zfXOe+JX.net
>>603
常にそうなるの?
たまたまじゃなくて?
db読み込みの時間とかが関係してきそうな気がするし
それに


631:write時間は以外に掛からないんでファイルがでかくなければnulとの差はつかない (read時間は掛かるし実行時間にかなりばらつきが出る、また2回目以降はキャッシュからになる)



632:デフォルトの名無しさん
16/09/11 02:05:36.54 zfXOe+JX.net
>>603
ちょっと試してみた
確かにnulの方が時間が掛かる
そこで、sqlite3の代わりに、type xxx.txt >yyy.txtで試してみた
やっぱりファイルに書き出すよりnulの方がはっきり時間がかかる
何故なのかは分からん、スマン

633:デフォルトの名無しさん
16/09/13 21:52:06.22 NwZGDC4j.net
コマンドプロンプトから実行して
処理しますか?(Y/N)⇒処理⇒処理完了後F3キー押すとして終了
するツールを毎日ポチらないといけないのですが
txtにYとF3を書いてリダイレクトで自動入力すれば楽にポチれる気がするんですが
F3をtxtファイルにどう書けばいいのかわかりません、助けてください

634:デフォルトの名無しさん
16/09/14 06:17:54.15 xpMA1gBQ.net
F3は無理だと思うけど・・・

635:デフォルトの名無しさん
16/09/14 08:44:57.03 f2EPB9Ji.net
>>606
uwscでやれば?

636:デフォルトの名無しさん
16/09/14 17:27:36.03 Jy6DKzEX.net
>>608
ありがとうございます
EXECでバッチファイル起動してYとF3入力してexit⇒ENTERで終了するようマクロ組みました
タイマー起動ソフトでUWSを指定時間に実行するようにしたので何もしなくてよくなりました
ありがとうございます

637:デフォルトの名無しさん
16/09/19 03:08:13.70 3gpWvjZ8.net
cmdですが
schtasksでstartコマンドがうまく使えません
/tr "start フルパス実行ファイル名"
※パスにはスペース無しです

638:デフォルトの名無しさん
16/09/19 03:34:12.50 rks5/FmO.net
>>610
cmd内部コマンドを起動するように登録するなら
"cmd /c start xxx"
だけど、単に
/tr xxx
じゃああかんの?(xxxはフルパスの実行ファイルなんでしょ?)

639:デフォルトの名無しさん
16/09/19 04:07:56.77 3gpWvjZ8.net
>>611
速いレスポンスありがとうございます
おっしゃる通りどちらもいけました!
もともとスペースありのパスで悩んで
/tr "フルパススペース混じり" …1
/tr "\"フルパススペース混じり\"" …2
上記1.2から始まり詰まってましたが
お陰様でstartの使い方がわかりました

640:デフォルトの名無しさん
16/09/19 12:05:07.29 mqRkSqP8.net
startは引数にスペースが混じるとおかしくなる
その場合は第一引数に空文字列入れると良い
start "" "c:\program files〜"

641:デフォルトの名無しさん
16/09/22 20:07:59.66 yIBGfr99.net
taskkill /im explorer.exe
start explorer
をバッチにしてエクスプローラ再起動に使ってたんだけど
最近explorer.exeが見つかりませんってなってkillできないんだけど何でだろう
タスクマネージャからなら止められるしPID指定でも止められるんだけど

642:デフォルトの名無しさん
16/09/27 11:38:03.47 clgfgzqk.net
10か

643:デフォルトの名無しさん
16/09/28 19:18:04.93 zhCs69qF.net
下記バッチファイルで call を実行する
@echo off
set a1=%%a2%%
set a2=%%a3%%
set a3=%%a4%%
set a4=%%a5%%
call echo %a1%
call echo %a1% | more
pause
結果は
%a3%
%a4%
なぜか表示が違う
パイプを使うと変数の展開が一回増えるようだ

644:デフォルトの名無しさん
16/09/29 00:33:45.25 RC/Dq8j5.net
パイプは、子タスクでインスタンスは別だと思うよ
set a=1
echo %a%|(more|set a=2)
echo %a%

645:デフォルトの名無しさん
16/09/29 00:34:51.35 RC/Dq8j5.net
echo %a%|(more&set a=2)

646:デフォルトの名無しさん
16/09/29 02:15:55.37 HmIZKCJu.net
echo %a1%
echo %a1% | more
%a2%
%a3%

647:デフォルトの名無しさん
16/09/29 02:29:13.86 HmIZKCJu.net
call call echo %a1%
call call echo %a1% | more
%a4%
%a5%

648:デフォルトの名無しさん
16/10/07 02:33:21.18 E4yfr


649:V8y.net



650:デフォルトの名無しさん
16/10/07 02:39:36.76 E4yfrV8y.net
>>621
追記ですが
"/"の数は変動します

651:デフォルトの名無しさん
16/10/07 03:13:06.25 PWoZvLSt.net
bat素人が適当に書いたらこうなった
set token_number=1
:start
for /f "tokens=%token_number%,* delims=/" %%a in ("/aaa/bbb/ccc") do if "%%b"=="" (
set hoge=/%%a
) else (
set /a token_number=token_number+1
goto start
)
echo %hoge%
pause

652:デフォルトの名無しさん
16/10/07 03:33:35.13 RDmrItg+.net
ちょっと邪道だけど
powershell -Command

653:デフォルトの名無しさん
16/10/07 03:34:29.48 RDmrItg+.net
切れたので再送
powershell -Command Split-Path -Path /aaa/bbb/ccc -Leaf

654:デフォルトの名無しさん
16/10/07 03:44:17.59 273HGXTN.net
>>621
tmp に & や % 等々が入っていない、ダメな文字が無いという楽観的な状態なら
set tmp=/aaa/bbb/ccc/ddd eee
call %tmp:/=&set tailpart=%
echo %tailpart%

655:デフォルトの名無しさん
16/10/07 10:20:31.14 uWLqn+Rg.net
echo [ERROR][%~n0][%date% %time%] エラー出た(ERRORLEVEL=%ERRORLEVEL%)
これ標準エラー出力で出力するのってどうやるんですか?

656:デフォルトの名無しさん
16/10/07 10:47:05.46 yoIkF7ck.net
>>627
標準出力先を標準エラー出力先と同じになるようにリダイレクトしてやるとかかな
(意図がわからんからこれで解決するのかどうかは知らんけど)
echo xxx 1>&2

2>errout.txt 1>&2 echo エラー(err no=111)

657:デフォルトの名無しさん
16/10/07 11:05:50.41 yoIkF7ck.net
出力先が同じだから、2>errout.txt は >errout.txt に書き替えても同じ結果になることからも分かるように
やってることはあくまで出力先を同じにしてるだけなので、標準エラー出力のみを取り扱ってるわけではないことに留意
(なお 1> の 1 は省略可能なので、 1>&2 は >&2 と書くことも可能)

658:デフォルトの名無しさん
16/10/07 11:23:31.75 uWLqn+Rg.net
echo aaa
echo bbb 1>&2
echo ccc
で試したところ望みどおりの動作になりました
ありがとうございます

659:デフォルトの名無しさん
16/10/07 11:44:29.04 5wS7M9ck.net
>>621
案1:
FOR /F "delims=" %%I IN ("/aaa/bbb/ccc") DO ECHO %%~nxI
案2:
CALL :SUB "/aaa/bbb/ccc"
GOTO :EOF
:SUB
ECHO %~nx1

660:デフォルトの名無しさん
16/10/07 12:09:19.90 PWoZvLSt.net
色んなやり方があるんだなあ勉強になる

661:デフォルトの名無しさん
16/10/08 07:09:00.83 sXvXMvPu.net
@echo off
set "a=/aaa/bbb/ccc\ddd"
set "b="
call :x a b
echo "%a%"
echo "%b%"
pause
goto :eof
:x
setlocal enabledelayedexpansion
set "a=/!%1!"
set b=-1
:y
set "c=!a:~%b%,1!"
if "!c!" == "/" goto z
set /a b-=1
goto y
:z
set "c=!a:~%b%!"
endlocal & set "%2=%c%"
goto :eof

662:デフォルトの名無しさん
16/10/09 20:38:11.04 mq9cB08l.net
7z.exe x AAA.zip -oBBB >hoge.txt
7z.exeで展開してるんだけど、終了するまえに、
次の処理に行ってしまい、その後がエラーになる。
7z.exeの終了を待つには、どうしたらいいのですか?
>hoge.txtは必要。
start /wait 7z.exe x AAA.zip -oBBB >hoge.txt
では、hoge.txtが空だし、コマンドプロンプトの窓がもう一個開くし。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


663:デフォルトの名無しさん
16/10/09 21:25:06.80 DFuD


664:/t4t.net



665:デフォルトの名無しさん
16/10/10 09:40:47.22 UJJq0Lfa.net
>>635
ありがとうございます。
10回くらいテストして、それ「start /B /wait "" 」でいけました。

666:デフォルトの名無しさん
16/10/12 15:15:40.33 CXMCNpce.net
for %%a in (“*.mkv”) do ffmpeg.exe -i %%a -b:v 3000k -acodec ac3 -ar 48000 -vcodec libx264 D:\encoded\%%~na.mp4

mkvとflvを入力に使いたいです
二重ループ以外に方法ありませんかね?

667:デフォルトの名無しさん
16/10/12 15:33:04.97 V1BPQ8PQ.net
`dir /b *.mkv;*.flv`をキャプチャすればいいんじゃないの
自分なら2行にコピペするがw

668:デフォルトの名無しさん
16/10/12 15:35:36.60 CyghQ6/+.net
"*.*v"
他にvが付くもの無ければ

669:デフォルトの名無しさん
16/10/12 15:38:43.19 CXMCNpce.net
>>638
すみません
2行にコピペするとはどういうことですか?

>>639
私も考えたのですがwmvがありました

670:デフォルトの名無しさん
16/10/12 16:07:30.74 aOSR32QX.net
for %%a in (*.mkv *.flv) do ...

671:デフォルトの名無しさん
16/10/12 16:12:00.02 YqqdfgOM.net
>>640
*.mkvで処理と*.flvで処理と2行for文を書くという意味じゃないかな?
for /f "tokens=*" %%a in ('dir /b *.mkv *.flv') do 〜
とか
dir /b *mkv>files.tmp
dir /b *.flv>>files.tmp
for /f "tokens~*" %%a in (files.tmp) do 〜
del files.tmp
とか色々とか色々と出来るよ

672:デフォルトの名無しさん
16/10/12 16:51:21.25 k+jI1aQa.net
質問です。サブディレクトリのファイルで、0バイトのファイルだけを削除したいです。
以下のページにあるサンプルをベースに、dirに /s をつけてサブディレクトリも
対象とするようにしました。
バッチで自動的に作成したファイルを容量チェックして削除する方法ってありますか? (DOSプロンプト活用相談室LOG)
URLリンク(fpcu.on.coocan.jp)
実行してみると、0バイト以外のファイルも条件が成立してしまい、
動作してくれません。OSがwindows10のせいでしょうか。
FOR /F %%F IN ('dir /s /B') DO ( CALL :CheckFile %%F )
EXIT /B
:CheckFile
SET FileAttrib=%~a1
IF NOT %FileAttrib:~0,1%==d (
IF not "%~z1" == "0" (
ECHO "%1" はファイルサイズが %~z1 で、0 なので削除します。
REM DEL %1
)
)
EXIT /B
==をEQUに変えてみたり、ダブルクォートをつけたりしましたが変化なしでした。
どのように直せば、0バイトのみが引っかかるようにできるか、宜しくお願いします。
なお、上記コードは、安全のためdelはREMをつけたままです。

673:デフォルトの名無しさん
16/10/12 17:01:12.97 k+jI1aQa.net
すいません補足です。
>IF not "%~z1" == "0" (
これは、notがないのが正常な状態です。
なにをやっても条件が成立してしまうので、
ためしにnotをつけて、論理が反転するか試したところ、
これも全部条件が成立してしまいました。
その実験をしたときの残骸のnotが残ってしまいました。

674:デフォルトの名無しさん
16/10/12 17:10:16.64 CyghQ6/+.net
if %~z1==0
のように書く。==の両側にスペース入れたらダメ

675:デフォルトの名無しさん
16/10/12 17:14:15.79 CyghQ6/+.net
それでもダメだったら
CALL :CheckFile %%~fF
を試してみて

676:デフォルトの名無しさん
16/10/12 17:19:24.35 CyghQ6/+.net
IF NOT %FileAttrib:~0,1%==d
これ必要?
dir /a-d /b /s としておけば要らない

677:デフォルトの名無しさん
16/10/12 17:32:19.00 k+jI1aQa.net
ありがとうございます。指摘の件を全て直しましたが、ダメでした。
FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )
EXIT /B
:CheckFile
SET FileAttrib=%~a1
IF %~z1==0 (
ECHO "%1" はファイルサイズが %~z1 で、0 なので削除します。
REM DEL %1
)
EXIT /B

実行結果
 IF 1695606 == 0 (
 "F:\TEST\file.txt" はファイルサイズが 1695606 で、0 なので 削除します。

678:デフォルトの名無しさん
16/10/12 17:37:43.49 h3rHiOkq.net
set hoge="hage te naiyo"
とやると、%hoge%でダブルクォーテーションも読み込んでしまいます
対処法教えて下さい

679:デフォルトの名無しさん
16/10/12 17:44:13.80 X88zouZU.net
パスにスペースが入ってんじゃ?

for /f "delims=" %%i in ('dir /a-d /b /s *.*') do if %%~zi EQU 0 del "%%~fi"

680:デフォルトの名無しさん
16/10/12 17:46:49.24 tJlO+qdh.net
set "hoge=hage te naiyo"

set hoge=hage te naiyo
そもそも "" でくくらない

681:デフォルトの名無しさん
16/10/12 17:54:18.24 YqqdfgOM.net
>>648
本当にそんな表示なのか?
上の IF 1695606 == 0 ( を書いてるということはbatの展開された実行ステートメントを表示してるだけじゃないのか?
正確には
IF 1695606 == 0 (
ECHO "F:\TEST\file.txt" はファイルサイズが 1695606 で、0 なので 削除します。
REM DEL F:\TEST\file.txt
)
と4行表示されただけなんじゃないの?
それと、半角空白の存在するファイル名があったらエラーになるよ
"tokens=*"とか"delims="をつけて、引数は""で囲んで渡すようにした方がいい
(さらに^とかの文字もファイル名に含まれてる可能性があるなら引数渡しは諦めて環境変数で渡すようにする)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1839日前に更新/325 KB
担当:undef