[過去ログ] 【.cmd】 バッチファイルスクリプト %8 【.bat】 (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
8
(3): 2011/09/16(金)10:48 AAS
>>7
あのさあ、自分で調べたり試したりする気の無いやつには
よほど暇なひきこもりの教えたがりしかレスしてくれないと思うよ

cd "\Users\owner\Desktop\親\*\"
1行目のこれすら思ったように動いてないんじゃない?
コマンドの書き方が間違えてるかどうかなんて
1行ずつ確認すればいいだけなんだからさ

> 子フォルダ内には孫フォルダしかない)場合に
この部分がたぶん君には出来ないと思うけど
今はそれ以前の問題だから出直しておいで
11
(3): 7 2011/09/16(金)19:05 AAS
条件無しまでは出来るようになりました。

1for /d %%a in (*) do (cd "\Users\owner\Desktop\親\%%a\*"
2for /d %%b in (*) do (cd "\Users\owner\Desktop\親\%%a\%%b\*"
3cd "\Users\owner\Desktop\親\%%a\*"
4if [not] exist *.* (
5cd "\Users\owner\Desktop\親\%%a\%%b\*"
6move *.* ..
7for /d %%c in (*) do (move "%%c" ..)
8rd %%b
9)))

345削除9))であれば全ての孫内がそのまま子に移り、空の孫フォルダは消えました。

最後の問題はIFなんですが、どこが間違ってるか文法が違うのか…もう頭が回りません。
どうか知恵をお貸しください。よろしくお願いします。

>>8
問題外でしたらすいません。
36
(4): 2011/09/26(月)23:38 AAS
cd /d "%~dp1"
2>nul "%cd:\="&set "HIRAGANA=%"
39
(9): 34 2011/09/27(火)01:20 AAS
1個づつは出来るようになったので、後は複数反転を処理できるよう
ずっと試行錯誤していたのですが結局できませんでした・・・orz
もしよろしければアドバイスを頂けないでしょうか?

移動する予定のテキストは1.txtから●1.txtのように、手動で
文頭に●を加えて、aaaフォルダの検索窓(windowsエクスプローラ)
から●のあるテキストを探して全て反転させ、右クリ>このbat
で移動したいと考えています。

@for %%A (%*) do (
Acd /d "%%~dpA"
B2>nul "%cd:\="&set "HIRAGANA=%"
Cmove "%%A" "Z:\hoge\bbb\%HIRAGANA%\"
D)

自分的にはこれが一番近いような気がするのですが
cmdは一瞬しか立ち上がりませんでした。
引き続き恐縮なのですが、どうかアドバイスを頂けないでしょうか?
ご指導ご鞭撻のほどよろしくお願いします。
40
(3): 2011/09/27(火)03:21 AAS
>>39
dir /b /s z:\hoge\aaa\●*.txt
プロンプトで実行してみ

for /f %%A in ('dir /b /s z:\hoge\aaa\●*.txt') do ()
とかで取り込めば?

バッチの先頭のほうで
set aaa=コピー元パス (z:\hoge\aaa)
set bbb=コピー先パス (z:\hoge\bbb)
とか設定するようにしておけば
ダブルクリックで実行したりタスクスケジュールで定期的に実行したり出来るよ

for /f %%A in ('dir /b /s %aaa%\●*.txt') do ()
こんな感じで

>>39のコマンドがダメなのは確認して無いけど遅延展開してないからだと思う
forの中は
call :sub %%A
とか使ってサブルーチン化するのが楽じゃないかな
45
(3): 2011/09/27(火)04:31 AAS
@echo off
:loop
if "%~n1"=="" goto end
rem ここに処理を書く
echo %~n1

shift /1
goto loop
:end
echo end
pause
101
(6): 2011/10/07(金)21:51 AAS
@echo on
setlocal disabledelayedexpansion
set DNAME="[あ&あ] a&a (甲&乙)"
echo %DNAME%|find "(" 1>nul
if errorlevel 1 ( set DTITLE=%DNAME%
) else ( call :DEL_GENRE )
echo %DTITLE%|find "]" 1>nul
if not errorlevel 1 ( set DTITLE="%DTITLE:*]=%
)
call :DEL_SPACE
echo %DTITLE%
pause
exit /b

:DEL_GENRE
set DGENRE="%DNAME:*(=%
set DGENRE=%DGENRE:&=^&%
call set DTITLE=%%DNAME:%DGENRE:~1,-1%=%%
set DTITLE=%DTITLE:~0,-2%"
exit /b

:DEL_SPACE
rem DTITLE前後の空白文字削除処理
exit /b

"[あ&あ] a&a 甲&乙)" も "[あ&あ a&a (甲&乙)" も大丈夫だが "[あ&あ a&a 甲&乙)" は失敗する
"[あ&あ a&a 甲&乙" だと大丈夫だから ")" のみだとマズいのかも。よくわからん
103
(3): 2011/10/08(土)01:58 AAS
>>101
> "[あ&あ a&a 甲&乙)" は失敗する
if not errorlevel 1 ( set DTITLE="%DTITLE:*]=%
)
これがダメ

if not errorlevel 1 ( call :DEL_LABEL )
call 使ってここもサブルーチン化
124
(3): 2011/10/10(月)21:13 AAS
1つ目の方法
titlelist.txtに"C:\test\juu fuku"配下のフォルダを対象に"タイトル" "フォルダ名"書き出し
titlelist.txtから"C:\test\juu fuku\該当"の行を削除
ここからループ処理
titlelist.txtから1行目が読み込めなければ終了処理
titlelist.txtから1行目の"タイトル"を読み込んで find /c """タイトル""" "titlelist.txt"
結果が1ならtitlelist.txtから1行目を削除してループに戻る
結果が2以上ならfind """タイトル""" "titlelist.txt"の結果をforで2番目のtoken抜き出して"フォルダ名"を順に取り出し
move "C:\test\juu fuku\フォルダ名" "C:\test\juu fuku\該当\フォルダ名"
titlelist.txtから"タイトル"の行を削除してループに戻る

2つ目
一度全てのフォルダを"C:\test\juu fuku\該当\タイトル\フォルダ名"とする
"C:\test\juu fuku\該当\"でdir /ad /bとかで"タイトル"フォルダ名を
forで順に取得してdirで"タイトル"フォルダ配下のフォルダ数を判定
"タイトル"フォルダ以下にフォルダがひとつであれば
"C:\test\juu fuku\フォルダ名"へ移動
ふたつ以上ならそのまま
上の処理が終わったら"C:\test\juu fuku\該当\タイトル\フォルダ名"を
"C:\test\juu fuku\該当\フォルダ名"へと移動して終了

他にも方法はいくらでもあるだろうけどとりあえずこんなところかな。
2つ目の方が簡単だけどコピーする数増えるしコピーで壊れる確率も増える
ベリファイする処理混ぜるとかコピーに>>106が言ってたfirefilecopy使ってベリファイするとかすればいい

自分で無理そうならこちらへ
気軽に「こんなソフトありませんか?」 Part.141
2chスレ:software
◆こんなソフトウェアつくってください〜Part16〜◆
2chスレ:software
284
(3): 2011/11/07(月)08:15 AAS
>>284
大雑把な説明だけど。

myprogがOSからみて実行ファイル(.exe、.com(笑)等)であればOSのプロセス管理機能の
管轄で実行されるので、特に暗黙のコマンドというものはない。

myprogがデータファイル(.txt等)であれば、OSに登録されている拡張子割当を元に
該当プログラムに"myprog"をパラメータとして勝手に渡して実行してくれる。
拡張子に割り当てられたプログラムが暗黙のコマンドになる。
(バッチファイルもこのパターンに相当する)

どちらの場合もstartコマンド有無は特に関係ない。
後者のパターンで"start myprog"を実行した場合でも、startコマンド実行後myprogに割り当てられた
プログラムが起動してmyprogがパラメータとして渡されるので、この場合も「暗黙のコマンド」が存在することになる。

拡張子割当の検索はバッチの範疇では無理・・・だと思う(レジストリを見なきゃならん)。

見当違いなことを言っていたらごめん。
303
(3): 2011/11/19(土)00:34 AAS
:loop
if not 60-現在の秒数 == 00 goto loop
タスクを実行
:loop2
if 60-現在の秒数 == 00 goto loop2
goto loop
340
(3): 2011/11/21(月)09:26 AAS
cmd.exe組み込みコマンドと同名のプログラムがPATH中に存在するとき、
組み込みコマンドを指定する方法はありますが?
mkdirはmdに変更することで逃げられますが、この方法が使えないとき
はどうすればいいでしょうか?
365
(3): 2011/11/23(水)12:30 AAS
start cmd /c pause
とすれば、別プロセスで開始したコマンドの終了を待たずに次に進めるけど、
(start cmd /c pause & start cmd /c pause) | sort
などとパイプすると、startしたアプリをすべて終了するまで次に進まなくなってしまうのを回避する方法ありません?
(start cmd /c pause & start cmd /c pause) > hoge.txt
リダイレクトなら普通に次に進めるのですが…
450
(4): 2012/01/22(日)15:35 AAS
D:\MUSIC\(複数アーティスト)\(各々に複数アルバム)\Resize\Folder.jpg という階層で
Folder.jpgを1つ上のディレクトリに上書き移動して、Resizeフォルダを削除したいのですがうまくできません。
ご教示いただけないでしょうか、一所懸命初めてバッチ書いてみましたがたぶん見当はずれです

cd /d D:\MUSIC
for /d %%A in (*) do (
cd %%A
for /d %%B in (*) do (
cd %%B\Resize
move /y Folder.jpg ..\Folder.jpg
cd ..
rd /s /q Resize
)
)
488
(3): 2012/02/05(日)03:25 AAS
質問をさせて下さい。
親フォルダにbatを置いて実行し、batの力でそこから子フォルダ、よく孫フォルダ、たまに曾孫
稀により下のバラバラな階層にある複数の最下層フォルダを、順々にカレントディレクトリ
にしたいのですが、どうやればよいのでしょうか?
やりたいことは最下層フォルダにあるファイル数が10個未満の場合に
その最下層フォルダを任意の場所に移動したいのです。

最下層フォルダからの個別移動に関しては最後の削除あたりがうまくいきませんでしたが
それ以外はこのスレを参考にして、なんとか動かすことができました。ありがとうございます。
後は親から複数の最下層フォルダに辿り着ければ何とかなりそうなのですが…
どうか知恵をお貸しください。よろしくお願いします。

個別の処理.bat
for /f %%a in ('dir /a-d ^|find "個のファイル"') do (
echo %%a
if %%a LSS 10 ( call :IDOU ) else ( echo 10個以上ある )
)
exit /b

:IDOU
echo このフォルダ内のファイル数は10個未満
for %%I in ("%~dp1.") do (
md "%%~nxI"
set DNAME="%%~nxI"
move *.* "%~dp0%%~nxI"
move "%~dp0%%~nxI" "C:\Users\XXX\Desktop\移動先\"
cd ..
pause
del "%~dp0%%DNAME:~1,-1%"
)
exit /b
607
(4): 2012/02/24(金)03:35 AAS
http://oshiete.goo.ne.jp/qa/3913616.html
これをフルPath指定ではなく、前方一致(もしくは部分一致)にするには、どうしたらよい?

http://www.tkssoft.com/cmd/cmd027.html
と組み合わせれば良いのかなー…と思ってるんだけど。
Forをネスト??
634
(6): 2012/02/29(水)06:27 AAS
バッチに送った複数のファイルやフォルダのパスをソートしたいのですが
@(for %%a in (%*) do @echo "%%~fa")|sort
ですと
"C:\TMP\abc\1ファイル.txt"
"C:\TMP\abc\2ファイル.txt"
"C:\TMP\abc\3ファイル.txt"
"C:\TMP\abc\4フォルダ"
"C:\TMP\abc\5フォルダ"
のようになってしまいます。これをエクスプローラーの並び順のように
"C:\TMP\abc\4フォルダ"
"C:\TMP\abc\5フォルダ"
"C:\TMP\abc\1ファイル.txt"
"C:\TMP\abc\2ファイル.txt"
"C:\TMP\abc\3ファイル.txt"
としたいのですがどう書けばいいですか
872
(3): 2012/03/21(水)05:45 AAS
>>860
ありがとう。
/s を付けると絶対パスで表示されるので、aフォルダとbフォルダのパス名を含めたファイル名が
一致しなくなってしまうのですが、dir /s の結果からaフォルダやbフォルダまでのドライブ名を含めた
パスの文字を消す手段ってありますでしょうか。
質問ばかりですいません。
884
(4): 2012/03/23(金)10:30 AAS
@echo off
set d1="%~1"& set d2="%~2"& set d3="%~3"
call :x d1 %%d1%% & call :x d2 %%d2%% & call :x d3 %%d3%%
set a=%d1%& set b=2
:y
set a="%a:~2%
if not %a% == "" set /a b+=1 & goto y
cd /d %d1%
for /f %%i in ('dir /a-d /s /b') do set c="%%~fi"& call :z
pause & goto :eof
:x
set d="%~f2"
if not "%d:~-2% == "\" set d=%d:~0,-1%\"
set %1=%d%& goto :eof
:z
setlocal enabledelayedexpansion
set c="!c:~%b%!
endlocal & set c=%c%
set e=%d2:~0,-1%%c:~1%
if not exist %e% goto :eof
echo n| comp %c% %e% > nul 2>&1
if errorlevel 1 goto :eof
set f=%d3:~0,-1%%c:~1%
echo f| xcopy %c% %f% /y /r > nul
if not errorlevel 1 del /f %c% %e%
903
(3): 2012/03/24(土)06:04 AAS
うわ、恥ずかしい
subst _: %1 & subst #: %2 & subst $: %3
for /r _:\ %%i in (*) do (
if exist "#:%%~pxni" (
fc /b "%%~i" "#:%%~pxni" >nul
if not errorlevel 1 (
xcopy "%%~i" "$:%%~pi"
del "%%~i" "#:%%~pxni" )))
subst /d _: & subst /d #: & subst /d $:
913
(4): 2012/03/24(土)14:19 AAS
>>912
ああ、ちょっと俺の書き方が悪かったね。
おれのWin2kではFCの戻り値が

比較するファイルが無い場合 1
ファイルサイズが違う場合 1
同じファイルの場合 0
中身が違うがサイズの同じ場合 0

なんだよ
今は仕様が変わったのかい?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.219s*