[前の記事]« AT実行結果の検査
[次の記事]同時に複数の入出力先を指定する方法 »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「COPY,XCOPY…ファイルやディスクの複写・連結・バックアップ」索引へ
▲カテゴリー「IF(結果の検査、条件分岐)」索引へ

拡張子.TXTがあればそのまま、なければ補ってCOPY処理したい

434.
こんな条件分岐ってできますか?
2005年05月08日(日) 23時10分
柿食う客(1)
●DOS/Windowsのバージョン↓
win xp proです
win 2000/xpで動くこんなの↓を作ったのですが
(一部分のみ)
copy %1 "c:\documents and settings\all users\デスクトップ" >nul
パラメータを指定するときに拡張子がめんどくさいので
もし最後に「.txt」がついていたらそのままコピーして
「.txt」がついていなかったら「%1.txt」を
コピーするということです
イメージとしては...
if "%1" == "ファイル名.txt" goto no_txt
(↑最後に「.txt」がついてたら...)
copy %1.txt デスクトップ
goto end
:no_txt
copy %1 デスクトップ
:end
こんな条件分岐のやり方を知っている人は教えてください
ちなみに初心者なので、できればバカでもわかるようにお願いします
435.
Re:こんな条件分岐ってできますか?
2005年05月09日(月) 01時19分
otn
>●DOS/Windowsのバージョン↓
>win xp proです
>win 2000/xpで動くこんなの↓を作ったのですが
>(一部分のみ)
>copy %1 "c:\documents and settings\all users\デスクトップ" >nul
>パラメータを指定するときに拡張子がめんどくさいので
>もし最後に「.txt」がついていたらそのままコピーして
>「.txt」がついていなかったら「%1.txt」を
>コピーするということです
>イメージとしては...
>if "%1" == "ファイル名.txt" goto no_txt
>(↑最後に「.txt」がついてたら...)
>copy %1.txt デスクトップ
>goto end
>:no_txt
>copy %1 デスクトップ
>:end
>こんな条件分岐のやり方を知っている人は教えてください
>ちなみに初心者なので、できればバカでもわかるようにお願いします

コマンドプロンプトで call /? と打つと情報があります。
if /i "%~x1"==".txt" goto no_txt
ですね。
if /i は大文字小文字を区別しない比較です。これは、if /? に情報があります。
441.
Re2:こんな条件分岐ってできますか?
2005年05月10日(火) 00時15分
柿食う客(1)
>コマンドプロンプトで call /? と打つと情報があります。
>if /i "%~x1"==".txt" goto no_txt
>ですね。
>if /i は大文字小文字を区別しない比較です。これは、if /? に情報があります。

     %~x1        - %1 をファイル拡張子だけに展開します。
すみませんが、「拡張子だけに展開」ってどういう意味ですか?
442.
Re3:こんな条件分岐ってできますか?
2005年05月10日(火) 14時53分
otn
>>コマンドプロンプトで call /? と打つと情報があります。
>>if /i "%~x1"==".txt" goto no_txt
>>ですね。
>>if /i は大文字小文字を区別しない比較です。これは、if /? に情報があります。

>     %~x1        - %1 をファイル拡張子だけに展開します。
>すみませんが、「拡張子だけに展開」ってどういう意味ですか?

わかりにくい日本語であるのは確かですね。
「%1 をファイル名とみなして、そのファイル名のうちの拡張子部分があれば、その部分と置き換える。無ければ空」というような意味です。

具体的にどういう動作なのかは、
-----------------printarg.bat----------------
@echo off
echo %%1    [%1]
echo %%~1   [%~1]
echo %%~f1  [%~f1]
echo %%~d1  [%~d1]
echo %%~p1  [%~p1]
echo %%~n1  [%~n1]
echo %%~x1  [%~x1]
echo %%~s1  [%~s1]
echo %%~a1  [%~a1]
echo %%~t1  [%~t1]
echo %%~z1  [%~z1]
----------------------------------------------
というバッチファイルを作って、printarg abc や printarg \aaa\bbb.ccc 等と打ってみればわかります。

ちなみに、%~1 の説明の、「すべての引用句を削除して」というのは誤訳で、「取り囲む引用符がもしあればそれを削除して」というのが正しいです。
原文は、
us
call /?
jp
で参照できます。
445.
Re4:こんな条件分岐ってできますか?
2005年05月10日(火) 20時41分
柿食う客(1)
otnさん、ありがとうございました
解決しました。
 
 


カテゴリー「COPY,XCOPY…ファイルやディスクの複写・連結・バックアップ」索引へ
カテゴリー「IF(結果の検査、条件分岐)」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2005年05月08日 11:38に投稿されたエントリーのページです。

ひとつ前の投稿は「AT実行結果の検査」です。

次の投稿は「同時に複数の入出力先を指定する方法」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート